add members sidebar + endpoint

This commit is contained in:
Soph :3 2026-01-07 02:24:27 +02:00
parent d333cbff04
commit 6f3ceb6838
7 changed files with 195 additions and 103 deletions

View file

@ -0,0 +1,58 @@
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');
};