diff --git a/backend/src/activitypub/actors/index.ts b/backend/src/activitypub/actors/index.ts index fa8dc69..0d5f574 100644 --- a/backend/src/activitypub/actors/index.ts +++ b/backend/src/activitypub/actors/index.ts @@ -225,7 +225,7 @@ export async function updateActorProperty(db: Database, actorId: URL, key: strin export async function setActorAlias(db: Database, actorId: URL, alias: URL) { const { success, error } = await db - .prepare(`UPDATE actors SET properties=json_set(properties, '$.alsoKnownAs', json_array(?)) WHERE id=?`) + .prepare(`UPDATE actors SET properties=json_set(properties, '$.alsoKnownAs', ${db.qb.jsonArray('?1')}) WHERE id=?2`) .bind(alias.toString(), actorId.toString()) .run() if (!success) { diff --git a/backend/src/database/d1.ts b/backend/src/database/d1.ts index ba6af22..440b516 100644 --- a/backend/src/database/d1.ts +++ b/backend/src/database/d1.ts @@ -25,6 +25,10 @@ const qb: QueryBuilder = { psqlOnly(): string { return '' }, + + jsonArray(r: string): string { + return `json_array(${r})` + }, } export default function make({ DATABASE }: Pick): Database { diff --git a/backend/src/database/index.ts b/backend/src/database/index.ts index edcc402..a43cb6e 100644 --- a/backend/src/database/index.ts +++ b/backend/src/database/index.ts @@ -33,6 +33,7 @@ export interface QueryBuilder { epoch(): string insertOrIgnore(q: string): string psqlOnly(raw: string): string + jsonArray(r: string): string } export async function getDatabase(env: Pick): Promise { diff --git a/backend/src/database/neon.ts b/backend/src/database/neon.ts index 6e7e715..80661f1 100644 --- a/backend/src/database/neon.ts +++ b/backend/src/database/neon.ts @@ -34,6 +34,10 @@ const qb: QueryBuilder = { psqlOnly(q: string): string { return q }, + + jsonArray(r: string): string { + return `json_array_elements_text(${r})` + }, } export default async function make(env: Pick): Promise {