import { db } from '$lib/server/db'; import * as table from '$lib/server/db/schema'; import { eq, inArray } from 'drizzle-orm'; import { GroupID, ServerID } from '$lib'; import { error, json } from '@sveltejs/kit'; import type { RequestHandler } from './$types'; export const GET: RequestHandler = async ({ params }) => { const { entityId } = params; if (!entityId) { throw error(400, 'Entity ID is required'); } if (GroupID.is(entityId)) { const group = await db.select().from(table.group).where(eq(table.group.id, entityId)); if (!group || group?.length == 0) { throw error(404, 'Group not found'); } const members = await db .select() .from(table.user) .where(inArray(table.user.id, group[0].members as string[])); return json({ members: members.map((member) => ({ id: member.id, username: member.username, image: `https://api.dicebear.com/7.x/pixel-art/svg?seed=${member.username}` })) }); } if (ServerID.is(entityId)) { const server = await db.select().from(table.server).where(eq(table.server.id, entityId)); if (!server || server?.length == 0) { throw error(404, 'Server not found'); } const members = await db .select() .from(table.user) .where(inArray(table.user.id, server[0].members as string[])); return json({ members: members.map((member) => ({ id: member.id, username: member.username, image: `https://api.dicebear.com/7.x/pixel-art/svg?seed=${member.username}` })) }); } throw error(400, 'Invalid entity ID'); };