From 04f36c6cab85e06c0586d1abadb3dab3f65c0a4e Mon Sep 17 00:00:00 2001 From: "gpt-engineer-app[bot]" <159125892+gpt-engineer-app[bot]@users.noreply.github.com> Date: Sun, 19 Apr 2026 18:22:20 +0000 Subject: [PATCH] Changes Co-authored-by: renee-png <262607627+renee-png@users.noreply.github.com> --- src/lib/status-pdf.ts | 35 +++++++++++++++++++++++++++++++++++ 1 file changed, 35 insertions(+) diff --git a/src/lib/status-pdf.ts b/src/lib/status-pdf.ts index 5713065..c33dd0f 100644 --- a/src/lib/status-pdf.ts +++ b/src/lib/status-pdf.ts @@ -171,3 +171,38 @@ export function downloadStatusReport(opts: StatusReportOptions, filename: string const doc = generateStatusReportPdf(opts); doc.save(filename); } + +import { supabase } from "@/integrations/supabase/client"; + +/** + * Upload a status-report PDF to the `generated-documents` bucket and create + * a `generated_documents` row with kind='status_report'. Returns the new row id. + */ +export async function saveStatusReportToDb( + opts: StatusReportOptions, + filename: string, + meta: { userId: string; payload?: Record }, +): Promise<{ id: string; storage_path: string }> { + const doc = generateStatusReportPdf(opts); + const blob = doc.output("blob"); + const safe = filename.replace(/[^a-zA-Z0-9._-]/g, "_"); + const storagePath = `${meta.userId}/${Date.now()}-${safe}`; + const { error: upErr } = await supabase.storage + .from("generated-documents") + .upload(storagePath, blob, { contentType: "application/pdf" }); + if (upErr) throw upErr; + + const { data, error } = await supabase + .from("generated_documents") + .insert({ + kind: "status_report", + name: filename.replace(/\.pdf$/i, ""), + storage_path: storagePath, + created_by: meta.userId, + payload: (meta.payload ?? {}) as never, + }) + .select("id, storage_path") + .single(); + if (error) throw error; + return data as { id: string; storage_path: string }; +}