import Elysia from "elysia"; import { betterAuthElysia } from "../auth"; import { db } from "../db"; import { getMemberRecord } from "../party-data"; import { partyAnalysisWorkflow } from "../workflows/party-analysis"; export const partyAnalysisApp = new Elysia() .use(betterAuthElysia) .post( "/party/analyze", async ({ user, set }) => { const membership = await getMemberRecord(db, user.id); if (!membership) { set.status = 400; return { error: "You are not in a party." }; } const currentParty = await db.query.party.findFirst({ where: { id: membership.partyId, }, }); if (!currentParty || currentParty.hostId !== user.id) { set.status = 403; return { error: "Only the host can trigger analysis." }; } const result = await partyAnalysisWorkflow.analyzeParty( membership.partyId, ); return result; }, { auth: true, }, ) .get( "/party/analysis", async ({ user, set }) => { const membership = await getMemberRecord(db, user.id); if (!membership) { set.status = 404; return { error: "Party not found." }; } const partyRecord = await db.query.party.findFirst({ where: { id: membership.partyId, }, }); if (!partyRecord?.analysisData) { set.status = 404; return { error: "No analysis data available." }; } return partyRecord.analysisData; }, { auth: true, }, );