From 63a5b9970c8c44ab12d30c8e9f5885686d9ba58c Mon Sep 17 00:00:00 2001 From: log101 Date: Wed, 21 Feb 2024 09:42:29 +0300 Subject: [PATCH] feat: compress images with sharp chore: switch to supabase --- bun.lockb | Bin 263994 -> 276198 bytes package.json | 2 ++ src/pages/api/content/index.ts | 46 ++++++++++++++++++++++++++------- 3 files changed, 38 insertions(+), 10 deletions(-) diff --git a/bun.lockb b/bun.lockb index fb8feed5d41631ac76a52482dfdd91703e0736f4..a8593f6bd508b8020912e20a9107daae9e30cc0c 100755 GIT binary patch delta 57911 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 L;X)a3+ delta 50532 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 jmeR4I~r}YrVj=hjiu!s@(=zET|d(X diff --git a/package.json b/package.json index b41c8ef..3217ea9 100644 --- a/package.json +++ b/package.json @@ -19,6 +19,7 @@ "@radix-ui/react-label": "^2.0.2", "@radix-ui/react-separator": "^1.0.3", "@radix-ui/react-slot": "^1.0.2", + "@supabase/supabase-js": "^2.39.7", "@types/react": "^18.2.47", "@types/react-dom": "^18.2.18", "@vercel/blob": "^0.19.0", @@ -33,6 +34,7 @@ "nanoid": "^5.0.4", "react": "^18.2.0", "react-dom": "^18.2.0", + "sharp": "^0.33.2", "tailwind-merge": "^2.2.0", "tailwindcss": "^3.4.1", "tailwindcss-animate": "^1.0.7", diff --git a/src/pages/api/content/index.ts b/src/pages/api/content/index.ts index ed8d709..f3c2328 100644 --- a/src/pages/api/content/index.ts +++ b/src/pages/api/content/index.ts @@ -1,4 +1,6 @@ -import { put } from "@vercel/blob" +import { createClient } from "@supabase/supabase-js" +import sharp from "sharp" + import type { APIRoute } from "astro" import { createKysely } from "@vercel/postgres-kysely" import { customAlphabet } from "nanoid" @@ -6,12 +8,12 @@ import { customAlphabet } from "nanoid" import type { Database } from "@/lib/db" export const POST: APIRoute = async ({ request }) => { - const data = await request.formData() + const formData = await request.formData() - const image = data.get("selected-photo") as File - const author = data.get("author") - const description = data.get("description") - const geolocation = data.get("geolocation") + const image = formData.get("selected-photo") as File + const author = formData.get("author") + const description = formData.get("description") + const geolocation = formData.get("geolocation") if (!image || !geolocation) { return new Response(null, { @@ -29,19 +31,43 @@ export const POST: APIRoute = async ({ request }) => { }) } - const blob = await put(image.name, image, { access: "public", token: import.meta.env.BLOB_READ_WRITE_TOKEN }) - - const db = createKysely({ connectionString: import.meta.env.POSTGRES_URL }) + const supabaseUrl = import.meta.env.SUPABASE_URL + const supabaseKey = import.meta.env.SUPABASE_KEY + const supabase = createClient(supabaseUrl, supabaseKey) const nanoid = customAlphabet("abcdefghijklmnoprstuvyz", 10) + const randomImageId = nanoid() + + const imageName = `${image.name.replace(/\.[^/.]+$/, "")}${randomImageId}.jpg` + const imagebuf = await image.arrayBuffer() + + const compressed = await sharp(imagebuf).toFormat("jpg", { quality: 75 }).toBuffer() + + const { data, error } = await supabase.storage.from("images").upload(`public/${imageName}`, compressed, { + cacheControl: "3600", + upsert: false + }) + + if (error) { + console.error(error.message, imageName, error.cause) + return new Response(null, { + status: 400, + statusText: error.message + }) + } + + const imagePublicUrl = `https://sozfqjbdyppxfwhqktja.supabase.co/storage/v1/object/public/images/public/${imageName}` + + const db = createKysely({ connectionString: import.meta.env.POSTGRES_URL }) + const newUrl = nanoid() const res = await db .insertInto("contents") .values({ url: `${newUrl.slice(0, 3)}-${newUrl.slice(3, 7)}-${newUrl.slice(7)}`, - blob_url: blob.url, + blob_url: imagePublicUrl, author: author?.toString() ?? "", description: description?.toString() ?? "", loc: `SRID=4326;POINT(${pos[0]} ${pos[1]})`