From 77b09baa8c2f2b46cfd6e250eadbf490ebc4b27f Mon Sep 17 00:00:00 2001 From: Alex Gleason Date: Tue, 29 Aug 2023 13:20:21 -0500 Subject: [PATCH] db/events: don't throw on duplicate events --- src/db/events.ts | 11 +++++++++-- src/deps.ts | 2 +- 2 files changed, 10 insertions(+), 3 deletions(-) diff --git a/src/db/events.ts b/src/db/events.ts index 48b9666..0404834 100644 --- a/src/db/events.ts +++ b/src/db/events.ts @@ -1,5 +1,5 @@ import { db, type TagRow } from '@/db.ts'; -import { type Event, type Insertable } from '@/deps.ts'; +import { type Event, type Insertable, SqliteError } from '@/deps.ts'; import type { DittoFilter, GetFiltersOpts } from '@/filter.ts'; @@ -23,7 +23,7 @@ function insertEvent(event: Event): Promise { ...event, tags: JSON.stringify(event.tags), }) - .executeTakeFirst(); + .execute(); const tagCounts: Record = {}; const tags = event.tags.reduce[]>((results, tag) => { @@ -48,6 +48,13 @@ function insertEvent(event: Event): Promise { .values(tags) .execute(); } + }).catch((error) => { + // Don't throw for duplicate events. + if (error instanceof SqliteError && error.code === 19) { + return; + } else { + throw error; + } }); } diff --git a/src/deps.ts b/src/deps.ts index 1ac6d9f..b361c5b 100644 --- a/src/deps.ts +++ b/src/deps.ts @@ -51,7 +51,7 @@ export { export { generateSeededRsa } from 'https://gitlab.com/soapbox-pub/seeded-rsa/-/raw/v1.0.0/mod.ts'; export * as secp from 'npm:@noble/secp256k1@^2.0.0'; export { LRUCache } from 'npm:lru-cache@^10.0.0'; -export { DB as Sqlite } from 'https://deno.land/x/sqlite@v3.7.3/mod.ts'; +export { DB as Sqlite, SqliteError } from 'https://deno.land/x/sqlite@v3.7.3/mod.ts'; export * as dotenv from 'https://deno.land/std@0.198.0/dotenv/mod.ts'; export { FileMigrationProvider,