aboutsummaryrefslogtreecommitdiffstats
path: root/packages/trpc/routers/bookmarks.ts
diff options
context:
space:
mode:
Diffstat (limited to 'packages/trpc/routers/bookmarks.ts')
-rw-r--r--packages/trpc/routers/bookmarks.ts34
1 files changed, 32 insertions, 2 deletions
diff --git a/packages/trpc/routers/bookmarks.ts b/packages/trpc/routers/bookmarks.ts
index c2d78c7f..f0abda84 100644
--- a/packages/trpc/routers/bookmarks.ts
+++ b/packages/trpc/routers/bookmarks.ts
@@ -5,6 +5,7 @@ import { z } from "zod";
import { db as DONT_USE_db } from "@hoarder/db";
import {
+ bookmarkAssets,
bookmarkLinks,
bookmarks,
bookmarksInLists,
@@ -75,6 +76,7 @@ async function dummyDrizzleReturnType() {
},
link: true,
text: true,
+ asset: true,
},
});
if (!x) {
@@ -88,13 +90,19 @@ type BookmarkQueryReturnType = Awaited<
>;
function toZodSchema(bookmark: BookmarkQueryReturnType): ZBookmark {
- const { tagsOnBookmarks, link, text, ...rest } = bookmark;
+ const { tagsOnBookmarks, link, text, asset, ...rest } = bookmark;
let content: ZBookmarkContent;
if (link) {
content = { type: "link", ...link };
} else if (text) {
content = { type: "text", text: text.text ?? "" };
+ } else if (asset) {
+ content = {
+ type: "asset",
+ assetType: asset.assetType,
+ assetId: asset.assetId,
+ };
} else {
throw new Error("Unknown content type");
}
@@ -157,6 +165,22 @@ export const bookmarksAppRouter = router({
};
break;
}
+ case "asset": {
+ const [asset] = await tx
+ .insert(bookmarkAssets)
+ .values({
+ id: bookmark.id,
+ assetType: input.assetType,
+ assetId: input.assetId,
+ })
+ .returning();
+ content = {
+ type: "asset",
+ assetType: asset.assetType,
+ assetId: asset.assetId,
+ };
+ break;
+ }
}
return {
@@ -176,7 +200,8 @@ export const bookmarksAppRouter = router({
});
break;
}
- case "text": {
+ case "text":
+ case "asset": {
await OpenAIQueue.add("openai", {
bookmarkId: bookmark.id,
});
@@ -292,6 +317,7 @@ export const bookmarksAppRouter = router({
},
link: true,
text: true,
+ asset: true,
},
});
if (!bookmark) {
@@ -341,6 +367,7 @@ export const bookmarksAppRouter = router({
},
link: true,
text: true,
+ asset: true,
},
});
@@ -412,6 +439,7 @@ export const bookmarksAppRouter = router({
.leftJoin(bookmarkTags, eq(tagsOnBookmarks.tagId, bookmarkTags.id))
.leftJoin(bookmarkLinks, eq(bookmarkLinks.id, sq.id))
.leftJoin(bookmarkTexts, eq(bookmarkTexts.id, sq.id))
+ .leftJoin(bookmarkAssets, eq(bookmarkAssets.id, sq.id))
.orderBy(desc(sq.createdAt));
const bookmarksRes = results.reduce<Record<string, ZBookmark>>(
@@ -423,6 +451,8 @@ export const bookmarksAppRouter = router({
content = { type: "link", ...row.bookmarkLinks };
} 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 };
} else {
throw new Error("Unknown content type");
}