From 2b4a745f121e2660757fb39a80eaa9488dc5cd79 Mon Sep 17 00:00:00 2001 From: Agusti Fernandez Pardo Date: Fri, 1 Apr 2022 22:04:42 +0200 Subject: [PATCH] feat: improve validations of users/attendee/availabilty to support required fields --- lib/validations/attendee.ts | 11 ++++++++++- lib/validations/availability.ts | 12 +++++++++++- lib/validations/user.ts | 9 ++++++++- 3 files changed, 29 insertions(+), 3 deletions(-) diff --git a/lib/validations/attendee.ts b/lib/validations/attendee.ts index 5e62be3580..856ab2bcae 100644 --- a/lib/validations/attendee.ts +++ b/lib/validations/attendee.ts @@ -1,11 +1,20 @@ import { withValidation } from "next-validations"; +import { z } from "zod"; import { _AttendeeModel as Attendee } from "@calcom/prisma/zod"; -export const schemaAttendeeBodyParams = Attendee.omit({ id: true }).partial(); +export const schemaAttendeeBaseBodyParams = Attendee.omit({ id: true }).partial(); export const schemaAttendeePublic = Attendee.omit({}); +const schemaAttendeeRequiredParams = z.object({ + email: z.string().email(), + name: z.string(), + timeZone: z.string(), +}); + +export const schemaAttendeeBodyParams = schemaAttendeeBaseBodyParams.merge(schemaAttendeeRequiredParams); + export const withValidAttendee = withValidation({ schema: schemaAttendeeBodyParams, type: "Zod", diff --git a/lib/validations/availability.ts b/lib/validations/availability.ts index cd747bdf73..d55cfb74fa 100644 --- a/lib/validations/availability.ts +++ b/lib/validations/availability.ts @@ -1,11 +1,21 @@ import { withValidation } from "next-validations"; +import { z } from "zod"; import { _AvailabilityModel as Availability } from "@calcom/prisma/zod"; -export const schemaAvailabilityBodyParams = Availability.omit({ id: true }); +export const schemaAvailabilityBaseBodyParams = Availability.omit({ id: true }).partial(); export const schemaAvailabilityPublic = Availability.omit({}); +const schemaAvailabilityRequiredParams = z.object({ + startTime: z.string(), + endTime: z.string(), +}); + +export const schemaAvailabilityBodyParams = schemaAvailabilityBaseBodyParams.merge( + schemaAvailabilityRequiredParams +); + export const withValidAvailability = withValidation({ schema: schemaAvailabilityBodyParams, type: "Zod", diff --git a/lib/validations/user.ts b/lib/validations/user.ts index a626456145..ec3f7a2247 100644 --- a/lib/validations/user.ts +++ b/lib/validations/user.ts @@ -1,8 +1,9 @@ import { withValidation } from "next-validations"; +import { z } from "zod"; import { _UserModel as User } from "@calcom/prisma/zod"; -export const schemaUserBodyParams = User.omit({ +export const schemaUserBaseBodyParams = User.omit({ id: true, createdAt: true, password: true, @@ -10,6 +11,12 @@ export const schemaUserBodyParams = User.omit({ twoFactorSecret: true, }).partial(); +const schemaUserRequiredParams = z.object({ + email: z.string().email(), +}); + +export const schemaUserBodyParams = schemaUserBaseBodyParams.merge(schemaUserRequiredParams); + export const schemaUserPublic = User.omit({ identityProvider: true, identityProviderId: true,