61 lines
1.1 KiB
TypeScript
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;
|