chat.sad.ovh/src/routes/api/members/[entityId]/+server.ts

58 lines
1.6 KiB
TypeScript

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');
};