random login image!

This commit is contained in:
Sean Morley
2024-06-12 17:38:34 +00:00
parent 20b6f826d9
commit 6385f9f46b
11 changed files with 646 additions and 20 deletions

View File

@@ -1,5 +1,7 @@
// src/routes/api/upload.js
import { db } from "$lib/db/db.server";
import { imagesTable } from "$lib/db/schema";
import { deleteObject, ensureBucketExists, uploadObject } from "$lib/server/s3";
import type { RequestEvent } from "@sveltejs/kit";
import { generateId } from "lucia";
@@ -10,6 +12,7 @@ export async function POST(event: RequestEvent): Promise<Response> {
const fileExtension = contentType.split("/").pop();
const fileName = `${generateId(75)}.${fileExtension}`;
const bucket = event.request.headers.get("bucket") as string;
const type = event.request.headers.get("type") as string | null;
if (!fileExtension || !fileName) {
return new Response(JSON.stringify({ error: "Invalid file type" }), {
@@ -32,7 +35,6 @@ export async function POST(event: RequestEvent): Promise<Response> {
);
}
// check if the file is an image
if (!contentType.startsWith("image")) {
return new Response(JSON.stringify({ error: "Invalid file type" }), {
status: 400,
@@ -49,7 +51,7 @@ export async function POST(event: RequestEvent): Promise<Response> {
await ensureBucketExists(bucket);
if (event.locals.user?.icon) {
if (event.locals.user?.icon && bucket === "profile-pics") {
const key: string = event.locals.user.icon.split("/").pop() as string;
await deleteObject(bucket, key);
}
@@ -60,6 +62,13 @@ export async function POST(event: RequestEvent): Promise<Response> {
Buffer.from(fileBuffer)
);
if (bucket === "images" && type && type === "background") {
let res = await db.insert(imagesTable).values({
url: objectUrl,
type: "background",
});
}
console.log(`File uploaded to ${objectUrl}`);
return new Response(JSON.stringify({ objectUrl }), {