diff --git a/packages/core/src/database/triggers.ts b/packages/core/src/database/triggers.ts index 37e398aad..7d349fb9f 100644 --- a/packages/core/src/database/triggers.ts +++ b/packages/core/src/database/triggers.ts @@ -53,7 +53,6 @@ export async function createTriggers(db: Kysely) { .addQuery((c) => c.insertInto("content_fts").values({ content_fts: sql.lit("delete"), - rowid: sql.ref("old.rowid"), id: sql.ref("old.id"), data: sql.ref("old.data"), noteId: sql.ref("old.noteId") @@ -67,10 +66,15 @@ export async function createTriggers(db: Kysely) { .onTable("content", "main") .after() .addEvent("update", ["data"]) + .when((eb) => + eb.and([ + eb.or([eb("new.deleted", "is", null), eb("new.deleted", "==", false)]), + eb.or([eb("new.locked", "is", null), eb("new.locked", "==", false)]) + ]) + ) .addQuery((c) => c.insertInto("content_fts").values({ content_fts: sql.lit("delete"), - rowid: sql.ref("old.rowid"), id: sql.ref("old.id"), data: sql.ref("old.data"), noteId: sql.ref("old.noteId") @@ -80,12 +84,31 @@ export async function createTriggers(db: Kysely) { c.insertInto("content_fts").values({ rowid: sql`new.rowid`, id: sql`new.id`, - data: sql`IIF(new.locked == 1, '', new.data)`, + data: sql`new.data`, noteId: sql`new.noteId` }) ) .execute(); + await db.schema + .createTrigger("content_after_update_locked_or_deleted_content_fts") + .temporary() + .onTable("content", "main") + .after() + .addEvent("update", ["deleted", "locked"]) + .when((eb) => + eb.or([eb("new.deleted", "is", true), eb("new.locked", "is", true)]) + ) + .addQuery((c) => + c.insertInto("content_fts").values({ + content_fts: sql.lit("delete"), + id: sql.ref("old.id"), + data: sql.ref("old.data"), + noteId: sql.ref("old.noteId") + }) + ) + .execute(); + // notes triggers await db.schema .createTrigger("notes_after_insert_notes_fts") @@ -116,7 +139,6 @@ export async function createTriggers(db: Kysely) { .addQuery((c) => c.insertInto("notes_fts").values({ notes_fts: sql.lit("delete"), - rowid: sql.ref("old.rowid"), id: sql.ref("old.id"), title: sql.ref("old.title") }) @@ -132,7 +154,6 @@ export async function createTriggers(db: Kysely) { .addQuery((c) => c.insertInto("notes_fts").values({ notes_fts: sql.lit("delete"), - rowid: sql.ref("old.rowid"), id: sql.ref("old.id"), title: sql.ref("old.title") })