leaky-ships/leaky-ships/pages/api/game/create.ts
2023-04-11 20:06:55 +02:00

53 lines
1.3 KiB
TypeScript

import sendError from "@backend/components/sendError"
import sendResponse from "@backend/components/sendResponse"
import getPlayer from "@lib/backend/components/getPlayer"
import prisma from "@lib/prisma"
import type { Game } from "@prisma/client"
import type { NextApiRequest, NextApiResponse } from "next"
interface Data {
game: Game
}
export default async function create(
req: NextApiRequest,
res: NextApiResponse<Data>
) {
const context = { req, res }
return getPlayer(context, async (player) => {
// Generate a random 4-digit code
const pin = Math.floor(Math.random() * 10000)
.toString()
.padStart(4, "0")
const game = await prisma.game.create({
data: {
pin: {
create: {
pin,
},
},
players: {
create: {
isOwner: true,
playerId: player.id,
},
},
},
include: {
pin: true,
players: true,
},
})
// Generate a random 4-digit code
const code = Math.floor(Math.random() * 10000)
console.log(code) // Output: a random 4-digit code, e.g. 5678
sendResponse(context, {
message: `Player: ${player.id} created game: ${game.id}`,
body: { game },
type: ["debug", "infoCyan"],
})
}).catch((err) => sendError(context, err))
}