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:
Tommy Parnell
2025-02-18 17:00:27 +00:00
parent 4eb6f7a482
commit 590bbf9506
2 changed files with 10 additions and 2 deletions

View File

@@ -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> {

View File

@@ -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"),