Files
games/packages/server/src/api.ts
2025-08-08 23:31:07 -04:00

61 lines
1.1 KiB
TypeScript

import { prisma } from "./db/db";
import { Elysia, t } from "elysia";
import { Prisma } from "@prisma/client";
const api = new Elysia({ prefix: "/api" })
// [wip]
.group("/prisma", (app) =>
app
.post("/game", ({ body }: { body: Prisma.GameFindManyArgs }) =>
prisma.game.findMany(body)
)
.post(
"/instance",
({ body }: { body: Prisma.InstanceFindManyArgs }) =>
prisma.instance.findMany(body)
)
)
.get("/games", () => prisma.game.findMany())
.get("/instances", ({ query: { game } }) =>
prisma.instance.findMany({
where: {
game: {
name: game,
},
},
select: {
id: true,
},
})
)
.get("/gameState/:gameId", ({ params: { gameId } }) =>
prisma.instance
.findUnique({
where: {
id: Number(gameId),
},
})
.then((game) => game?.gameState)
)
.put(
"/gameState/:gameId",
({ params: { gameId }, body: { gameState } }) =>
prisma.instance.update({
data: { gameState },
where: {
id: Number(gameId),
},
}),
{
body: t.Object({
gameState: t.Any(),
}),
}
);
export default api;
export type Api = typeof api;