obsidian-visualiser/server/api/campaign.get.ts

20 lines
774 B
TypeScript

import { eq } from 'drizzle-orm';
import useDatabase from '~/composables/useDatabase';
export default defineEventHandler(async (e) => {
const db = useDatabase();
const session = await getUserSession(e);
if(!session || !session.user) return setResponseStatus(e, 401);
const data = db.query.campaignTable.findMany({
with: {
members: { with: { member: { columns: { username: true, id: true } } }, columns: { } },
characters: { where: ({ id }) => eq(id, session.user!.id), columns: { character: true } },
owner: { columns: { username: true, id: true } },
},
}).sync();
return data.filter(e => e.owner.id === session.user!.id || e.members.find(e => e.member?.id === session.user!.id));
});