diff --git a/apps/backend/src/app/api/admin/bookings/[id]/route.ts b/apps/backend/src/app/api/admin/bookings/[id]/route.ts index c55b0de9f..eb9525f00 100644 --- a/apps/backend/src/app/api/admin/bookings/[id]/route.ts +++ b/apps/backend/src/app/api/admin/bookings/[id]/route.ts @@ -1,4 +1,4 @@ -import { UpdateBookingRequestSchema } from "@repo/shared" +import { type CommonBookingResponse, UpdateBookingRequestSchema } from "@repo/shared" import { getReasonPhrase, StatusCodes } from "http-status-codes" import { type NextRequest, NextResponse } from "next/server" import { NotFound } from "payload" @@ -15,7 +15,10 @@ class BookingsRouteWrapper { * @returns The updated {@link Booking} document, otherwise an appropriate error response. */ @Security("jwt", ["admin"]) - static async PATCH(req: NextRequest, { params }: { params: Promise<{ id: string }> }) { + static async PATCH( + req: NextRequest, + { params }: { params: Promise<{ id: string }> }, + ): Promise> { try { const parsedBody = UpdateBookingRequestSchema.parse(await req.json()) const bookingDataService = new BookingDataService() diff --git a/packages/shared/src/schemas/booking.ts b/packages/shared/src/schemas/booking.ts index 59a0cdaff..48ce5a9da 100644 --- a/packages/shared/src/schemas/booking.ts +++ b/packages/shared/src/schemas/booking.ts @@ -1,13 +1,14 @@ import { z } from "zod" -import { type EditBookingData, PlayLevel } from "../types" +import type { EditBookingData } from "../types" import { GameSessionSchema } from "./game-session" +import { CommonResponseSchema } from "./response" import { UserSchema } from "./user" export const BookingSchema = z.object({ id: z.string(), user: z.union([z.string(), UserSchema]), gameSession: z.union([z.string(), GameSessionSchema]), - playerLevel: z.nativeEnum(PlayLevel), + playerLevel: z.enum(["beginner", "intermediate", "advanced"]), updatedAt: z.string(), createdAt: z.string(), }) @@ -23,5 +24,14 @@ export const GetBookingsResponseSchema = z.object({ data: z.array(BookingSchema), }) +// export const CommonBookingResponseSchema = CommonResponseSchema.extend({ +// data: BookingSchema.optional(), +// }) + +export const CommonBookingResponseSchema = z.union([ + z.object({ data: BookingSchema }), + CommonResponseSchema, +]) + export const UpdateBookingRequestSchema = CreateBookingRequestSchema.partial() satisfies z.ZodType diff --git a/packages/shared/src/types/booking.ts b/packages/shared/src/types/booking.ts index a106a8dc6..a80fa9aee 100644 --- a/packages/shared/src/types/booking.ts +++ b/packages/shared/src/types/booking.ts @@ -1,6 +1,12 @@ import type z from "zod" -import type { BookingSchema, CreateBookingRequestSchema } from "../schemas" +import type { + BookingSchema, + CommonBookingResponseSchema, + CreateBookingRequestSchema, +} from "../schemas" export type BookingType = z.infer export type CreateBookingRequest = z.infer + +export type CommonBookingResponse = z.infer