full e2e behavior, nice

This commit is contained in:
2025-08-08 00:04:46 -04:00
parent 9d4b17b762
commit eb064273ed
11 changed files with 117 additions and 27 deletions

View File

@@ -1,6 +1,68 @@
import { Hono } from "hono";
import { prisma } from "./db/db";
import { zValidator } from "@hono/zod-validator";
import { z } from "zod";
const api = new Hono().get("/ping", (c) => c.text("pong"));
const api = new Hono()
.get("/ping", (c) => c.text("pong"))
.get("/games", async (c) => {
const games = await prisma.game.findMany();
return c.json(games);
})
.get(
"/instances",
zValidator("query", z.object({ game: z.string() })),
async (c) => {
const { game } = c.req.valid("query");
const instances = await prisma.instance.findMany({
where: {
game: {
name: game,
},
},
select: {
id: true,
},
});
return c.json(instances);
}
)
.get(
"/gameState/:gameId",
zValidator("param", z.object({ gameId: z.string() })),
async (c) => {
const { gameId } = c.req.valid("param");
const instance = await prisma.instance.findUnique({
where: {
id: Number(gameId),
},
});
return c.json(instance?.gameState);
}
)
.put(
"/gameState/:gameId",
zValidator("param", z.object({ gameId: z.string() }), (result) => {
console.log(JSON.stringify(result, null, 2));
}),
zValidator("json", z.any()),
async (c) => {
const { gameId } = c.req.valid("param");
const gameState = c.req.valid("json");
await prisma.instance.update({
data: { gameState },
where: {
id: Number(gameId),
},
});
return c.text("", 200);
}
);
export default api;
export type ApiType = typeof api;