diff options
| author | MohamedBassem <me@mbassem.com> | 2024-03-19 02:21:54 +0000 |
|---|---|---|
| committer | MohamedBassem <me@mbassem.com> | 2024-03-19 02:23:04 +0000 |
| commit | aa7d68a00cbe9d7d3733f4cd02061d4586af061c (patch) | |
| tree | c4382ba683b5245f2bfeb0c3595f8768f39cc905 /packages/trpc | |
| parent | 785a5b574992296e187a66412dd42f7b4a686353 (diff) | |
| download | karakeep-aa7d68a00cbe9d7d3733f4cd02061d4586af061c.tar.zst | |
refactor: Change asset storage to be the filesystem instead of sqlite
Diffstat (limited to 'packages/trpc')
| -rw-r--r-- | packages/trpc/routers/bookmarks.ts | 22 | ||||
| -rw-r--r-- | packages/trpc/types/bookmarks.ts | 1 |
2 files changed, 19 insertions, 4 deletions
diff --git a/packages/trpc/routers/bookmarks.ts b/packages/trpc/routers/bookmarks.ts index f0abda84..cd3ab17c 100644 --- a/packages/trpc/routers/bookmarks.ts +++ b/packages/trpc/routers/bookmarks.ts @@ -13,6 +13,7 @@ import { bookmarkTexts, tagsOnBookmarks, } from "@hoarder/db/schema"; +import { deleteAsset } from "@hoarder/shared/assetdb"; import { LinkCrawlerQueue, OpenAIQueue, @@ -104,7 +105,7 @@ function toZodSchema(bookmark: BookmarkQueryReturnType): ZBookmark { assetId: asset.assetId, }; } else { - throw new Error("Unknown content type"); + content = { type: "unknown" }; } return { @@ -181,6 +182,9 @@ export const bookmarksAppRouter = router({ }; break; } + case "unknown": { + throw new TRPCError({ code: "BAD_REQUEST" }); + } } return { @@ -274,7 +278,10 @@ export const bookmarksAppRouter = router({ .input(z.object({ bookmarkId: z.string() })) .use(ensureBookmarkOwnership) .mutation(async ({ input, ctx }) => { - await ctx.db + const asset = await ctx.db.query.bookmarkAssets.findFirst({ + where: and(eq(bookmarkAssets.id, input.bookmarkId)), + }); + const deleted = await ctx.db .delete(bookmarks) .where( and( @@ -286,6 +293,9 @@ export const bookmarksAppRouter = router({ bookmarkId: input.bookmarkId, type: "delete", }); + if (deleted.changes > 0 && asset) { + await deleteAsset({ userId: ctx.user.id, assetId: asset.assetId }); + } }), recrawlBookmark: authedProcedure .input(z.object({ bookmarkId: z.string() })) @@ -452,9 +462,13 @@ export const bookmarksAppRouter = router({ } else if (row.bookmarkTexts) { content = { type: "text", text: row.bookmarkTexts.text ?? "" }; } else if (row.bookmarkAssets) { - content = { type: "asset", assetId: row.bookmarkAssets.assetId, assetType: row.bookmarkAssets.assetType }; + content = { + type: "asset", + assetId: row.bookmarkAssets.assetId, + assetType: row.bookmarkAssets.assetType, + }; } else { - throw new Error("Unknown content type"); + content = { type: "unknown" }; } acc[bookmarkId] = { ...row.bookmarksSq, diff --git a/packages/trpc/types/bookmarks.ts b/packages/trpc/types/bookmarks.ts index f8848d35..477adbc8 100644 --- a/packages/trpc/types/bookmarks.ts +++ b/packages/trpc/types/bookmarks.ts @@ -30,6 +30,7 @@ export const zBookmarkContentSchema = z.discriminatedUnion("type", [ zBookmarkedLinkSchema, zBookmarkedTextSchema, zBookmarkedAssetSchema, + z.object({type: z.literal("unknown")}), ]); export type ZBookmarkContent = z.infer<typeof zBookmarkContentSchema>; |
