aboutsummaryrefslogtreecommitdiffstats
path: root/apps/web/app/api/assets
diff options
context:
space:
mode:
authorMohamedBassem <me@mbassem.com>2024-10-06 14:33:40 +0000
committerMohamedBassem <me@mbassem.com>2024-10-06 15:51:45 +0000
commit1e5c575e16c8a9e6bd7592e83bea53af7f359e15 (patch)
treed706b7d0dad309e1c4e5ede15fcae8a5e2547c8a /apps/web/app/api/assets
parentdb2d346cd6c265d8e7c69383c6de03bf5f6252f0 (diff)
downloadkarakeep-1e5c575e16c8a9e6bd7592e83bea53af7f359e15.tar.zst
refactor: Start tracking bookmark assets in the assets table
Diffstat (limited to 'apps/web/app/api/assets')
-rw-r--r--apps/web/app/api/assets/[assetId]/route.ts11
-rw-r--r--apps/web/app/api/assets/route.ts17
2 files changed, 27 insertions, 1 deletions
diff --git a/apps/web/app/api/assets/[assetId]/route.ts b/apps/web/app/api/assets/[assetId]/route.ts
index f3cf1ab4..73237d8d 100644
--- a/apps/web/app/api/assets/[assetId]/route.ts
+++ b/apps/web/app/api/assets/[assetId]/route.ts
@@ -1,5 +1,7 @@
import { createContextFromRequest } from "@/server/api/client";
+import { and, eq } from "drizzle-orm";
+import { assets } from "@hoarder/db/schema";
import { readAsset } from "@hoarder/shared/assetdb";
export const dynamic = "force-dynamic";
@@ -11,6 +13,15 @@ export async function GET(
if (!ctx.user) {
return Response.json({ error: "Unauthorized" }, { status: 401 });
}
+
+ const assetDb = await ctx.db.query.assets.findFirst({
+ where: and(eq(assets.id, params.assetId), eq(assets.userId, ctx.user.id)),
+ });
+
+ if (!assetDb) {
+ return Response.json({ error: "Asset not found" }, { status: 404 });
+ }
+
const { asset, metadata } = await readAsset({
userId: ctx.user.id,
assetId: params.assetId,
diff --git a/apps/web/app/api/assets/route.ts b/apps/web/app/api/assets/route.ts
index 9028f556..0e52ff93 100644
--- a/apps/web/app/api/assets/route.ts
+++ b/apps/web/app/api/assets/route.ts
@@ -2,6 +2,7 @@ import { createContextFromRequest } from "@/server/api/client";
import { TRPCError } from "@trpc/server";
import type { ZUploadResponse } from "@hoarder/shared/types/uploads";
+import { assets, AssetTypes } from "@hoarder/db/schema";
import {
newAssetId,
saveAsset,
@@ -43,8 +44,22 @@ export async function POST(request: Request) {
return Response.json({ error: "Bad request" }, { status: 400 });
}
- const assetId = newAssetId();
const fileName = data.name;
+ const [assetDb] = await ctx.db
+ .insert(assets)
+ .values({
+ id: newAssetId(),
+ // Initially, uploads are uploaded for unknown purpose
+ // And without an attached bookmark.
+ assetType: AssetTypes.UNKNOWN,
+ bookmarkId: null,
+ userId: ctx.user.id,
+ contentType,
+ size: data.size,
+ fileName,
+ })
+ .returning();
+ const assetId = assetDb.id;
await saveAsset({
userId: ctx.user.id,