From 5ef620f55b58bf3ded66be83f420ab7b585368b3 Mon Sep 17 00:00:00 2001 From: Fergal Moran Date: Wed, 18 Sep 2024 14:21:38 +0100 Subject: [PATCH] Fixed URL of image --- bun.lockb | Bin 401828 -> 402560 bytes ...ge.sql => 0000_wandering_steve_rogers.sql} | 1 + drizzle/meta/0000_snapshot.json | 8 ++++++- drizzle/meta/_journal.json | 4 ++-- src/app/api/upload/post/route.ts | 6 ++++++ src/middleware.ts | 3 +++ src/server/api/routers/image.ts | 20 ++++++++++-------- src/server/db/schema.ts | 1 + 8 files changed, 31 insertions(+), 12 deletions(-) rename drizzle/{0000_watery_carnage.sql => 0000_wandering_steve_rogers.sql} (98%) diff --git a/bun.lockb b/bun.lockb index a79b8211fed6c14e56fd79d434dd75d1b9c78b0c..a9cddb0de627e1d29918754ab3cacc686251f692 100755 GIT binary patch delta 41283 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 delta 41136 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 rT5Z$()BZUKU@}_5d1-@>$smz0ckx%^(BkEbC diff --git a/drizzle/0000_watery_carnage.sql b/drizzle/0000_wandering_steve_rogers.sql similarity index 98% rename from drizzle/0000_watery_carnage.sql rename to drizzle/0000_wandering_steve_rogers.sql index 00d75fb..d90a2f4 100644 --- a/drizzle/0000_watery_carnage.sql +++ b/drizzle/0000_wandering_steve_rogers.sql @@ -18,6 +18,7 @@ CREATE TABLE IF NOT EXISTS "images" ( "title" varchar(256), "description" varchar, "tags" text[], + "filepath" varchar(256), "created_by" varchar(255) NOT NULL, "created_at" timestamp with time zone DEFAULT CURRENT_TIMESTAMP NOT NULL, "updated_at" timestamp with time zone diff --git a/drizzle/meta/0000_snapshot.json b/drizzle/meta/0000_snapshot.json index 02985a4..0be79c4 100644 --- a/drizzle/meta/0000_snapshot.json +++ b/drizzle/meta/0000_snapshot.json @@ -1,5 +1,5 @@ { - "id": "c81af722-c72f-46d8-9457-c8ece996a058", + "id": "f7541b9a-140c-4795-a672-4d0c80b56ef1", "prevId": "00000000-0000-0000-0000-000000000000", "version": "7", "dialect": "postgresql", @@ -146,6 +146,12 @@ "primaryKey": false, "notNull": false }, + "filepath": { + "name": "filepath", + "type": "varchar(256)", + "primaryKey": false, + "notNull": false + }, "created_by": { "name": "created_by", "type": "varchar(255)", diff --git a/drizzle/meta/_journal.json b/drizzle/meta/_journal.json index 5c82025..80007ba 100644 --- a/drizzle/meta/_journal.json +++ b/drizzle/meta/_journal.json @@ -5,8 +5,8 @@ { "idx": 0, "version": "7", - "when": 1726515307439, - "tag": "0000_watery_carnage", + "when": 1726662474693, + "tag": "0000_wandering_steve_rogers", "breakpoints": true } ] diff --git a/src/app/api/upload/post/route.ts b/src/app/api/upload/post/route.ts index 741dcaa..f73c5eb 100644 --- a/src/app/api/upload/post/route.ts +++ b/src/app/api/upload/post/route.ts @@ -4,6 +4,9 @@ import { env } from "@/env"; import { type NextRequest, NextResponse } from "next/server"; import fs from "fs"; import path from "path"; +import { db } from "@/server/db"; +import { images } from "@/server/db/schema"; +import { eq } from "drizzle-orm"; export async function POST(request: NextRequest) { const session = await getServerSession(); @@ -32,6 +35,9 @@ export async function POST(request: NextRequest) { const filePath = `${id}${extension}`; fs.writeFileSync(path.resolve(env.UPLOAD_PATH, filePath), buffer); + + await db.update(images).set({ filePath }).where(eq(images.id, id)); + return NextResponse.json({ success: true, url: env.NEXT_PUBLIC_SITE_URL + `/i/${filePath}`, diff --git a/src/middleware.ts b/src/middleware.ts index 693dbea..122b5ff 100644 --- a/src/middleware.ts +++ b/src/middleware.ts @@ -34,5 +34,8 @@ const params = (url: string) => { }; export async function middleware(request: NextRequest, response: NextResponse) { const { id } = params(request.url) as { id?: string }; + if (!id) { + return NextResponse.next(); + } return NextResponse.rewrite(new URL(`/uploads/${id}`, request.url)); } diff --git a/src/server/api/routers/image.ts b/src/server/api/routers/image.ts index b3db9d7..41af296 100644 --- a/src/server/api/routers/image.ts +++ b/src/server/api/routers/image.ts @@ -18,15 +18,17 @@ export const imageRouter = createTRPCRouter({ const trending = await ctx.db.query.images.findMany({ orderBy: (images, { desc }) => [desc(images.createdAt)], }); - return trending.map(t => { - return { - id: t.id, - title: t.title, - description: t.description, - tags: t.tags, - url: `${env.IMAGE_BASE_URL}/${t.id}`, - }; - }) ?? null; + return ( + trending.map((t) => { + return { + id: t.id, + title: t.title, + description: t.description, + tags: t.tags, + url: `${env.IMAGE_BASE_URL}/${t.filePath}`, + }; + }) ?? null + ); }), create: protectedProcedure .input(z.object(imageCreateType)) diff --git a/src/server/db/schema.ts b/src/server/db/schema.ts index c07afae..e3665c0 100644 --- a/src/server/db/schema.ts +++ b/src/server/db/schema.ts @@ -21,6 +21,7 @@ export const images = createTable("images", { title: varchar("title", { length: 256 }), description: varchar("description"), tags: text("tags").array(), + filePath: varchar("filepath", { length: 256 }), createdById: varchar("created_by", { length: 255 }) .notNull() .references(() => users.id),