a fun bot for the hc slack
at v0.2.0 1.3 kB view raw
1import { db } from "../../../libs/db"; 2import { users as usersTable } from "../../../libs/schema"; 3import { handleApiError } from "../../../libs/apiError"; 4import { eq } from "drizzle-orm"; 5 6export type Project = { 7 projectName: string; 8 projectDescription: string; 9 projectBannerUrl: string; 10 /** Total time spent on takes, in seconds */ 11 totalTakesTime: number; 12 userId: string; 13}; 14 15export async function projects(url: URL): Promise<Response> { 16 const user = url.searchParams.get("user"); 17 try { 18 const projects = await db 19 .select({ 20 projectName: usersTable.projectName, 21 projectDescription: usersTable.projectDescription, 22 projectBannerUrl: usersTable.projectBannerUrl, 23 totalTakesTime: usersTable.totalTakesTime, 24 userId: usersTable.id, 25 }) 26 .from(usersTable) 27 .where(eq(usersTable.id, user ? user : usersTable.id)); 28 29 if (projects.length === 0) { 30 return new Response( 31 JSON.stringify({ 32 projects: [], 33 }), 34 { 35 headers: { 36 "Content-Type": "application/json", 37 }, 38 }, 39 ); 40 } 41 42 return new Response( 43 JSON.stringify({ 44 projects: user ? projects[0] : projects, 45 }), 46 { 47 headers: { 48 "Content-Type": "application/json", 49 }, 50 }, 51 ); 52 } catch (error) { 53 return handleApiError(error, "projects"); 54 } 55}