diff options
| author | Mohamed Bassem <me@mbassem.com> | 2025-01-19 13:55:40 +0000 |
|---|---|---|
| committer | Mohamed Bassem <me@mbassem.com> | 2025-01-19 19:06:48 +0000 |
| commit | cddaefd9420507318d71f56355ff5a6648dcd951 (patch) | |
| tree | cf196ef12c36fdb0502b5ebf0f722ab32de8e2c0 /packages/db/schema.ts | |
| parent | 64f24acb9a1835ea7f0bec241c233c3e4a202d46 (diff) | |
| download | karakeep-cddaefd9420507318d71f56355ff5a6648dcd951.tar.zst | |
feat: Change webhooks to be configurable by users
Diffstat (limited to 'packages/db/schema.ts')
| -rw-r--r-- | packages/db/schema.ts | 29 |
1 files changed, 29 insertions, 0 deletions
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], + }), +})); |
