From cddaefd9420507318d71f56355ff5a6648dcd951 Mon Sep 17 00:00:00 2001 From: Mohamed Bassem Date: Sun, 19 Jan 2025 13:55:40 +0000 Subject: feat: Change webhooks to be configurable by users --- packages/db/schema.ts | 29 +++++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) (limited to 'packages/db/schema.ts') diff --git a/packages/db/schema.ts b/packages/db/schema.ts index 9d742b45..c1706edf 100644 --- a/packages/db/schema.ts +++ b/packages/db/schema.ts @@ -381,6 +381,26 @@ export const rssFeedsTable = sqliteTable( (bl) => [index("rssFeeds_userId_idx").on(bl.userId)], ); +export const webhooksTable = sqliteTable( + "webhooks", + { + id: text("id") + .notNull() + .primaryKey() + .$defaultFn(() => createId()), + createdAt: createdAtField(), + url: text("url").notNull(), + userId: text("userId") + .notNull() + .references(() => users.id, { onDelete: "cascade" }), + events: text("events", { mode: "json" }) + .notNull() + .$type<("created" | "edited" | "crawled")[]>(), + token: text("token"), + }, + (bl) => [index("webhooks_userId_idx").on(bl.userId)], +); + export const rssFeedImportsTable = sqliteTable( "rssFeedImports", { @@ -414,6 +434,7 @@ export const config = sqliteTable("config", { export const userRelations = relations(users, ({ many }) => ({ tags: many(bookmarkTags), bookmarks: many(bookmarks), + webhooks: many(webhooksTable), })); export const bookmarkRelations = relations(bookmarks, ({ many, one }) => ({ @@ -505,3 +526,11 @@ export const bookmarksInListsRelations = relations( }), }), ); + + +export const webhooksRelations = relations(webhooksTable, ({ one }) => ({ + user: one(users, { + fields: [webhooksTable.userId], + references: [users.id], + }), +})); -- cgit v1.2.3-70-g09d2