add members sidebar + endpoint
This commit is contained in:
parent
d333cbff04
commit
6f3ceb6838
7 changed files with 195 additions and 103 deletions
58
src/routes/api/members/[entityId]/+server.ts
Normal file
58
src/routes/api/members/[entityId]/+server.ts
Normal 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');
|
||||
};
|
||||
Loading…
Add table
Add a link
Reference in a new issue