aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSalvatore Gentile <884093+SalGnt@users.noreply.github.com>2025-05-25 00:56:20 +0200
committerGitHub <noreply@github.com>2025-05-24 23:56:20 +0100
commit8a927e964ae4c601910ab5f7c8d3d2b25e335988 (patch)
tree0029019d8580b680bd23a39f4db13c786a3897b1
parent37c18b89ddcdae9010fc00bb7ef717c60bc01df9 (diff)
downloadkarakeep-8a927e964ae4c601910ab5f7c8d3d2b25e335988.tar.zst
feat: Add "deleted" webhook event (#1464)
-rw-r--r--apps/web/lib/i18n/locales/en_US/translation.json3
-rw-r--r--packages/db/schema.ts2
-rw-r--r--packages/shared/queues.ts2
-rw-r--r--packages/shared/types/webhooks.ts1
-rw-r--r--packages/trpc/routers/bookmarks.ts1
5 files changed, 6 insertions, 3 deletions
diff --git a/apps/web/lib/i18n/locales/en_US/translation.json b/apps/web/lib/i18n/locales/en_US/translation.json
index f9fee264..a80ecb84 100644
--- a/apps/web/lib/i18n/locales/en_US/translation.json
+++ b/apps/web/lib/i18n/locales/en_US/translation.json
@@ -205,7 +205,8 @@
"title": "Events",
"crawled": "Crawled",
"created": "Created",
- "edited": "Edited"
+ "edited": "Edited",
+ "deleted": "Deleted"
},
"auth_token": "Auth Token",
"delete_webhook": "Delete Webhook",
diff --git a/packages/db/schema.ts b/packages/db/schema.ts
index 0e8167c7..5c109b76 100644
--- a/packages/db/schema.ts
+++ b/packages/db/schema.ts
@@ -419,7 +419,7 @@ export const webhooksTable = sqliteTable(
.references(() => users.id, { onDelete: "cascade" }),
events: text("events", { mode: "json" })
.notNull()
- .$type<("created" | "edited" | "crawled" | "ai tagged")[]>(),
+ .$type<("created" | "edited" | "crawled" | "ai tagged" | "deleted")[]>(),
token: text("token"),
},
(bl) => [index("webhooks_userId_idx").on(bl.userId)],
diff --git a/packages/shared/queues.ts b/packages/shared/queues.ts
index bbf69428..a434414c 100644
--- a/packages/shared/queues.ts
+++ b/packages/shared/queues.ts
@@ -172,7 +172,7 @@ export const AssetPreprocessingQueue =
// Webhook worker
export const zWebhookRequestSchema = z.object({
bookmarkId: z.string(),
- operation: z.enum(["crawled", "created", "edited", "ai tagged"]),
+ operation: z.enum(["crawled", "created", "edited", "ai tagged", "deleted"]),
});
export type ZWebhookRequest = z.infer<typeof zWebhookRequestSchema>;
export const WebhookQueue = new SqliteQueue<ZWebhookRequest>(
diff --git a/packages/shared/types/webhooks.ts b/packages/shared/types/webhooks.ts
index 819951ce..75980b70 100644
--- a/packages/shared/types/webhooks.ts
+++ b/packages/shared/types/webhooks.ts
@@ -8,6 +8,7 @@ export const zWebhookEventSchema = z.enum([
"edited",
"crawled",
"ai tagged",
+ "deleted",
]);
export type ZWebhookEvent = z.infer<typeof zWebhookEventSchema>;
diff --git a/packages/trpc/routers/bookmarks.ts b/packages/trpc/routers/bookmarks.ts
index de5bd4c2..29a77d8c 100644
--- a/packages/trpc/routers/bookmarks.ts
+++ b/packages/trpc/routers/bookmarks.ts
@@ -660,6 +660,7 @@ export const bookmarksAppRouter = router({
),
);
await triggerSearchDeletion(input.bookmarkId);
+ await triggerWebhook(input.bookmarkId, "deleted");
if (deleted.changes > 0 && bookmark) {
await cleanupAssetForBookmark({
asset: bookmark.asset,