55 lines
1.6 KiB
TypeScript
55 lines
1.6 KiB
TypeScript
|
import { z } from "zod";
|
||
|
|
||
|
import { _AvailabilityModel as Availability, _ScheduleModel as Schedule } from "@calcom/prisma/zod";
|
||
|
import { denullishShape } from "@calcom/prisma/zod-utils";
|
||
|
|
||
|
export const schemaAvailabilityBaseBodyParams = /** We make all these properties required */ denullishShape(
|
||
|
Availability.pick({
|
||
|
/** We need to pass the schedule where this availability belongs to */
|
||
|
scheduleId: true,
|
||
|
})
|
||
|
);
|
||
|
|
||
|
export const schemaAvailabilityReadPublic = Availability.pick({
|
||
|
id: true,
|
||
|
startTime: true,
|
||
|
endTime: true,
|
||
|
date: true,
|
||
|
scheduleId: true,
|
||
|
days: true,
|
||
|
// eventTypeId: true /** @deprecated */,
|
||
|
// userId: true /** @deprecated */,
|
||
|
}).merge(z.object({ success: z.boolean().optional(), Schedule: Schedule.partial() }).partial());
|
||
|
|
||
|
const schemaAvailabilityCreateParams = z
|
||
|
.object({
|
||
|
startTime: z.date().or(z.string()),
|
||
|
endTime: z.date().or(z.string()),
|
||
|
days: z.array(z.number()).optional(),
|
||
|
})
|
||
|
.strict();
|
||
|
|
||
|
const schemaAvailabilityEditParams = z
|
||
|
.object({
|
||
|
startTime: z.date().or(z.string()).optional(),
|
||
|
endTime: z.date().or(z.string()).optional(),
|
||
|
days: z.array(z.number()).optional(),
|
||
|
})
|
||
|
.strict();
|
||
|
|
||
|
export const schemaAvailabilityEditBodyParams = schemaAvailabilityEditParams;
|
||
|
|
||
|
export const schemaAvailabilityCreateBodyParams = schemaAvailabilityBaseBodyParams.merge(
|
||
|
schemaAvailabilityCreateParams
|
||
|
);
|
||
|
|
||
|
export const schemaAvailabilityReadBodyParams = z
|
||
|
.object({
|
||
|
userId: z.union([z.number(), z.array(z.number())]),
|
||
|
})
|
||
|
.partial();
|
||
|
|
||
|
export const schemaSingleAvailabilityReadBodyParams = z.object({
|
||
|
userId: z.number(),
|
||
|
});
|