aboutsummaryrefslogtreecommitdiffstats
path: root/packages/db/schema.ts
diff options
context:
space:
mode:
authorMohamed Bassem <me@mbassem.com>2025-01-19 13:55:40 +0000
committerMohamed Bassem <me@mbassem.com>2025-01-19 19:06:48 +0000
commitcddaefd9420507318d71f56355ff5a6648dcd951 (patch)
treecf196ef12c36fdb0502b5ebf0f722ab32de8e2c0 /packages/db/schema.ts
parent64f24acb9a1835ea7f0bec241c233c3e4a202d46 (diff)
downloadkarakeep-cddaefd9420507318d71f56355ff5a6648dcd951.tar.zst
feat: Change webhooks to be configurable by users
Diffstat (limited to 'packages/db/schema.ts')
-rw-r--r--packages/db/schema.ts29
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],
+ }),
+}));