53 lines
1.3 KiB
TypeScript
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))
|
|
}
|