From e4f53b3936450de0f90df3bdbf29b734095ef4f1 Mon Sep 17 00:00:00 2001 From: Alex Gleason Date: Sat, 2 Mar 2024 21:11:45 -0600 Subject: [PATCH] Soft-delete events --- src/db.ts | 1 + src/db/migrations/013_soft_deletion.ts | 9 +++++++++ src/storages/events-db.ts | 8 +++----- 3 files changed, 13 insertions(+), 5 deletions(-) create mode 100644 src/db/migrations/013_soft_deletion.ts diff --git a/src/db.ts b/src/db.ts index 253fed94..e1039dc3 100644 --- a/src/db.ts +++ b/src/db.ts @@ -38,6 +38,7 @@ interface EventRow { created_at: number; tags: string; sig: string; + deleted_at: number | null; } interface EventFTSRow { diff --git a/src/db/migrations/013_soft_deletion.ts b/src/db/migrations/013_soft_deletion.ts new file mode 100644 index 00000000..3856ca02 --- /dev/null +++ b/src/db/migrations/013_soft_deletion.ts @@ -0,0 +1,9 @@ +import { Kysely } from '@/deps.ts'; + +export async function up(db: Kysely): Promise { + await db.schema.alterTable('events').addColumn('deleted_at', 'integer').execute(); +} + +export async function down(db: Kysely): Promise { + await db.schema.alterTable('events').dropColumn('deleted_at').execute(); +} diff --git a/src/storages/events-db.ts b/src/storages/events-db.ts index b5c8ee77..304f2837 100644 --- a/src/storages/events-db.ts +++ b/src/storages/events-db.ts @@ -155,6 +155,7 @@ class EventsDB implements NStore { 'events.created_at', 'events.sig', ]) + .where('events.deleted_at', 'is', null) .orderBy('events.created_at', 'desc'); for (const [key, value] of Object.entries(filter)) { @@ -329,12 +330,9 @@ class EventsDB implements NStore { const query = this.getEventsQuery(filters).clearSelect().select('id'); - await db.deleteFrom('events_fts') - .where('id', 'in', () => query) - .execute(); - - return db.deleteFrom('events') + return await db.updateTable('events') .where('id', 'in', () => query) + .set({ deleted_at: Math.floor(Date.now() / 1000) }) .execute(); }