feat: scaffold quiz API vertical slice

- Add GameRequestSchema and derived types to packages/shared
- Add SupportedLanguageCode, SupportedPos, DifficultyLevel type exports
- Add getGameTerms() model to packages/db with pos/language/difficulty/limit filters
- Add prepareGameQuestions() service skeleton in apps/api
- Add createGame controller with Zod safeParse validation
- Wire POST /api/v1/game/start route
- Add scripts/gametest/test-game.ts for manual end-to-end testing
This commit is contained in:
lila 2026-04-09 13:47:01 +02:00
parent 13cc709b09
commit 9fc3ba375a
11 changed files with 99 additions and 94 deletions

View file

@ -1,8 +1,17 @@
import type { Request, Response } from "express";
import { prepareQuestions } from "../services/gameService.js";
import { GameRequestSchema } from "@glossa/shared";
import { prepareGameQuestions } from "../services/gameService.js";
export const getGame = async (req: Request, res: Response) => {
const query = gameRequestSchema.parse(req.query);
const questions = await prepareQuestions(query);
res.json({ success: true, data: questions });
export const createGame = async (req: Request, res: Response) => {
const gameSettings = GameRequestSchema.safeParse(req.body);
// TODO: remove when global error handler is implemented
if (!gameSettings.success) {
res.status(400).json({ success: false });
return;
}
const gameQuestions = await prepareGameQuestions(gameSettings.data);
res.json({ success: true, data: gameQuestions });
};