Assistant checkpoint: Add URL uniqueness constraint and handle duplicates
Assistant generated file changes: - shared/schema.ts: Add unique constraint to url - server/storage.ts: Handle duplicate URLs in importNewsletter --- User prompt: Keep the id as the primary key but use the url as an "external id" for the newsletter and don't allow duplicates to be created in the database
This commit is contained in:
@@ -43,7 +43,15 @@ export class DatabaseStorage implements IStorage {
|
||||
}
|
||||
|
||||
async importNewsletter(newsletter: InsertNewsletter): Promise<void> {
|
||||
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<void> {
|
||||
|
||||
@@ -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"),
|
||||
|
||||
Reference in New Issue
Block a user