From b81a6c3bf6931e44ef264d49a482deea8ee53dbc Mon Sep 17 00:00:00 2001 From: Alzer Del Zeyger <75466035+Dx-Alz-xD@users.noreply.github.com> Date: Wed, 11 Nov 2026 19:31:57 +0530 Subject: [PATCH] fix(upload): drop the unused thumbnail upload the upload page never sends a thumbnail, and when one was sent the service passed the full pdf url to uploadThumbnail, so the object was saved under a name like https://storage.googleapis.com//....png remove the thumbnail field from the route, the service and gcp storage --- src/app/api/upload/route.ts | 5 ++--- src/app/upload/page.tsx | 1 - src/lib/services/upload.ts | 16 ++++------------ src/lib/storage/gcp.ts | 10 ---------- 4 files changed, 6 insertions(+), 26 deletions(-) diff --git a/src/app/api/upload/route.ts b/src/app/api/upload/route.ts index 4cbc6c2f..d30082c3 100644 --- a/src/app/api/upload/route.ts +++ b/src/app/api/upload/route.ts @@ -10,14 +10,13 @@ export async function POST(req: Request) { const formData = await req.formData(); const files = formData.getAll("files").filter(Boolean) as File[]; const isPdf = formData.get("isPdf") === "true"; - const thumbnail = formData.get("thumbnail") as File | null; const campus = formData.get("campus") as string | null; if (files.length === 0) { return failure("No files received.", 400); } - const result = await uploadPaper({ files, isPdf, thumbnail, campus }); + const result = await uploadPaper({ files, isPdf, campus }); if (!result.success) { return failure(result.message, result.status); @@ -55,7 +54,7 @@ export async function POST(req: Request) { } return success( - { file_url: result.file_url, thumbnail_url: result.thumbnail_url }, + { file_url: result.file_url }, "Created", 201, ); diff --git a/src/app/upload/page.tsx b/src/app/upload/page.tsx index dd9dfdb1..db50738e 100644 --- a/src/app/upload/page.tsx +++ b/src/app/upload/page.tsx @@ -32,7 +32,6 @@ GlobalWorkerOptions.workerSrc = interface uploadResponse { file_url: string; - thumbnail_url: string; } export default function Page() { const campus = "Vellore"; diff --git a/src/lib/services/upload.ts b/src/lib/services/upload.ts index 0b7df64e..3208d826 100644 --- a/src/lib/services/upload.ts +++ b/src/lib/services/upload.ts @@ -1,6 +1,6 @@ import { PaperAdmin } from "@/db/papers"; import { createPDFfromImages, compressPDF } from "@/lib/storage/pdf"; -import { uploadPDF, uploadThumbnail } from "@/lib/storage/gcp"; +import { uploadPDF } from "@/lib/storage/gcp"; import { connectToDatabase } from "@/lib/database/mongoose"; const MAX_COMPRESSED_PDF_SIZE = 5 * 1024 * 1024; // 5MB compressed @@ -9,18 +9,16 @@ const COMPRESS_THRESHOLD = 5 * 1024 * 1024; // 5MB type UploadPaperInput = { files: File[]; isPdf: boolean; - thumbnail: File | null; campus: string | null; }; type UploadPaperResult = - | { success: true; file_url: string; thumbnail_url: string | null } + | { success: true; file_url: string } | { success: false; message: string; status: number }; export async function uploadPaper({ files, isPdf, - thumbnail, campus, }: UploadPaperInput): Promise { await connectToDatabase(); @@ -63,15 +61,9 @@ export async function uploadPaper({ const buffer = Buffer.from(pdfBytes); const file_url = await uploadPDF("unapproved", buffer); - let thumbnail_url: string | null = null; - if (thumbnail) { - const thumbBuffer = Buffer.from(await thumbnail.arrayBuffer()); - thumbnail_url = await uploadThumbnail(thumbBuffer, file_url); - } - const paper = new PaperAdmin({ file_url, - thumbnail_url, + thumbnail_url: null, campus, subject: null, slot: null, @@ -82,5 +74,5 @@ export async function uploadPaper({ }); await paper.save(); - return { success: true, file_url, thumbnail_url }; + return { success: true, file_url }; } diff --git a/src/lib/storage/gcp.ts b/src/lib/storage/gcp.ts index e036bb66..e475740a 100644 --- a/src/lib/storage/gcp.ts +++ b/src/lib/storage/gcp.ts @@ -43,14 +43,4 @@ export async function uploadPDF(folder: string, buffer: Buffer) { const pdfFilename = `${folder}/${Date.now()}-${Math.random().toString(36).substring(2)}.pdf`; await bucket.file(pdfFilename).save(buffer, { resumable: false, contentType: "application/pdf" }); return `https://storage.googleapis.com/${bucketName}/${pdfFilename}`; -} - -export async function uploadThumbnail(buffer: Buffer, pdfFilename: string) { - if (!bucket) { - throw new Error("Google Cloud Storage is not configured"); - } - const bucketName = process.env.GOOGLE_CLOUD_BUCKET ?? ""; - const thumbFilename = pdfFilename.replace(".pdf", ".png"); - await bucket.file(thumbFilename).save(buffer, { resumable: false, contentType: "image/png" }); - return `https://storage.googleapis.com/${bucketName}/${thumbFilename}`; } \ No newline at end of file