feat: add scheduling conflict helpers
This commit is contained in:
@@ -1,14 +1,24 @@
|
||||
import { z } from 'zod';
|
||||
import { idSchema, optionalText, requiredText } from './shared.schema';
|
||||
|
||||
export const bookingCreateSchema = z.object({
|
||||
clientId: requiredText('Client'),
|
||||
roomId: requiredText('Room'),
|
||||
serviceId: optionalText(80),
|
||||
startsAt: requiredText('Start time', 40),
|
||||
endsAt: requiredText('End time', 40),
|
||||
status: z.enum(['booked', 'confirmed', 'completed', 'cancelled']).default('booked'),
|
||||
notes: optionalText(1000)
|
||||
});
|
||||
export const bookingCreateSchema = z
|
||||
.object({
|
||||
clientId: requiredText('Client'),
|
||||
roomId: requiredText('Room'),
|
||||
serviceId: optionalText(80),
|
||||
startsAt: requiredText('Start time', 40),
|
||||
endsAt: requiredText('End time', 40),
|
||||
status: z.enum(['booked', 'confirmed', 'completed', 'cancelled']).default('booked'),
|
||||
notes: optionalText(1000)
|
||||
})
|
||||
.superRefine((data, ctx) => {
|
||||
if (data.startsAt && data.endsAt && data.endsAt <= data.startsAt) {
|
||||
ctx.addIssue({
|
||||
code: 'custom',
|
||||
path: ['endsAt'],
|
||||
message: 'End time must be after the start time.'
|
||||
});
|
||||
}
|
||||
});
|
||||
|
||||
export const bookingEditSchema = bookingCreateSchema.extend(idSchema.shape);
|
||||
export const bookingEditSchema = bookingCreateSchema.safeExtend(idSchema.shape);
|
||||
|
||||
Reference in New Issue
Block a user