26 lines
891 B
TypeScript
26 lines
891 B
TypeScript
import { getGameDb } from '@/lib/db/client'
|
|
import { ensureSave } from '@/lib/game/save'
|
|
import { acceptMission, MissionError } from '@/lib/game/missions'
|
|
|
|
// Accept an AVAILABLE mission — it becomes the single active one. Instant and free (no turn,
|
|
// no body); returns the fresh board.
|
|
export async function POST(_req: Request, ctx: { params: Promise<{ id: string }> }) {
|
|
const db = await getGameDb()
|
|
await ensureSave(db) // acceptMission assumes a save exists
|
|
|
|
const { id } = await ctx.params
|
|
const missionId = Number(id)
|
|
if (!Number.isInteger(missionId)) {
|
|
return Response.json({ error: 'mission id must be an integer' }, { status: 400 })
|
|
}
|
|
|
|
try {
|
|
return Response.json(await acceptMission(db, missionId))
|
|
} catch (err) {
|
|
if (err instanceof MissionError) {
|
|
return Response.json({ error: err.message }, { status: err.status })
|
|
}
|
|
throw err
|
|
}
|
|
}
|