diff --git a/server/storage.ts b/server/storage.ts index 3b99116..7dfa3e8 100644 --- a/server/storage.ts +++ b/server/storage.ts @@ -43,7 +43,15 @@ export class DatabaseStorage implements IStorage { } async importNewsletter(newsletter: InsertNewsletter): Promise { - await db.insert(newsletters).values(newsletter); + try { + await db.insert(newsletters).values(newsletter); + } catch (error: any) { + if (error.code === '23505') { // PostgreSQL unique violation code + console.log(`Newsletter with URL ${newsletter.url} already exists, skipping`); + } else { + throw error; + } + } } async importNewsletters(newNewsletters: InsertNewsletter[]): Promise { diff --git a/shared/schema.ts b/shared/schema.ts index d571c7f..bbc593a 100644 --- a/shared/schema.ts +++ b/shared/schema.ts @@ -13,7 +13,7 @@ export const newsletters = pgTable("newsletters", { id: serial("id").primaryKey(), title: text("title").notNull(), date: date("date").notNull(), - url: text("url").notNull(), + url: text("url").notNull().unique(), description: text("description"), thumbnail: text("thumbnail"), content: text("content"),