import { logger } from "@helpers/logger"; import { type ReservedSQL, sql } from "bun"; export const order: number = 6; export async function createTable(reservation?: ReservedSQL): Promise { let selfReservation: boolean = false; if (!reservation) { reservation = await sql.reserve(); selfReservation = true; } try { await reservation` CREATE TABLE IF NOT EXISTS avatars ( id UUID PRIMARY KEY DEFAULT gen_random_uuid(), owner UUID NOT NULL REFERENCES users(id) ON DELETE CASCADE, mime_type VARCHAR(255) NOT NULL, extension VARCHAR(255) NOT NULL, size BIGINT NOT NULL, created_at TIMESTAMPTZ DEFAULT NOW() NOT NULL, updated_at TIMESTAMPTZ DEFAULT NOW() NOT NULL ); `; } catch (error) { logger.error(["Could not create the avatars table:", error as Error]); throw error; } finally { if (selfReservation) { reservation.release(); } } } export function isValidTypeOrExtension( type: string, extension: string, ): boolean { return ( ["image/jpeg", "image/png", "image/gif", "image/webp"].includes(type) && ["jpeg", "jpg", "png", "gif", "webp"].includes(extension) ); }