a fun bot for the hc slack
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}