From 8a62c3948d7444c89ed2e5a4325abe8395d023e2 Mon Sep 17 00:00:00 2001 From: Agusti Fernandez Pardo Date: Tue, 17 May 2022 22:09:44 +0200 Subject: [PATCH 01/22] fix: metadata null or json schema --- lib/validations/event-type.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/validations/event-type.ts b/lib/validations/event-type.ts index 6b03597f2a..eb1a5cc984 100644 --- a/lib/validations/event-type.ts +++ b/lib/validations/event-type.ts @@ -39,7 +39,7 @@ const schemaEventTypeBaseParams = z description: z.string().optional().nullable(), length: z.number().int(), locations: jsonSchema.optional().nullable().or(z.null()), - metadata: jsonSchema.optional().nullish(), + metadata: z.null().or(jsonSchema), recurringEvent: jsonSchema.optional().nullable().or(z.null()), }) .strict(); From 5072ac7d5218d5e2c2ac8831f58c69c1c1bb77fa Mon Sep 17 00:00:00 2001 From: Agusti Fernandez Pardo Date: Tue, 17 May 2022 22:13:33 +0200 Subject: [PATCH 02/22] fix: any or null --- lib/validations/event-type.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/validations/event-type.ts b/lib/validations/event-type.ts index eb1a5cc984..e5d96ce636 100644 --- a/lib/validations/event-type.ts +++ b/lib/validations/event-type.ts @@ -39,7 +39,7 @@ const schemaEventTypeBaseParams = z description: z.string().optional().nullable(), length: z.number().int(), locations: jsonSchema.optional().nullable().or(z.null()), - metadata: z.null().or(jsonSchema), + metadata: z.any().optional().nullable().or(z.null()), recurringEvent: jsonSchema.optional().nullable().or(z.null()), }) .strict(); From 4d6dbd39cd1c658e11ce97c1292eacbbf5e9b4b2 Mon Sep 17 00:00:00 2001 From: Agusti Fernandez Pardo Date: Tue, 17 May 2022 22:17:05 +0200 Subject: [PATCH 03/22] fix: dont merge base params --- lib/validations/event-type.ts | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/lib/validations/event-type.ts b/lib/validations/event-type.ts index e5d96ce636..0773368eb0 100644 --- a/lib/validations/event-type.ts +++ b/lib/validations/event-type.ts @@ -32,7 +32,7 @@ export const schemaEventTypeBaseBodyParams = EventType.pick({ successRedirectUrl: true, }).partial(); -const schemaEventTypeBaseParams = z +// const schemaEventTypeBaseParams = z .object({ title: z.string(), slug: z.string(), @@ -83,7 +83,6 @@ export const schemaEventTypeReadPublic = EventType.pick({ price: true, currency: true, slotInterval: true, + metadata: true, successRedirectUrl: true, -}) - .merge(schemaEventTypeBaseParams) - .partial(); +}).partial(); From b49df1a7aa3c906e69b68f13ddf4ba266e2b3bcf Mon Sep 17 00:00:00 2001 From: Agusti Fernandez Pardo Date: Tue, 17 May 2022 22:21:00 +0200 Subject: [PATCH 04/22] fix: dont read metadata for now --- lib/validations/event-type.ts | 1 - 1 file changed, 1 deletion(-) diff --git a/lib/validations/event-type.ts b/lib/validations/event-type.ts index 0773368eb0..309ab048dc 100644 --- a/lib/validations/event-type.ts +++ b/lib/validations/event-type.ts @@ -83,6 +83,5 @@ export const schemaEventTypeReadPublic = EventType.pick({ price: true, currency: true, slotInterval: true, - metadata: true, successRedirectUrl: true, }).partial(); From a39d396c8e555d655b1f0c087ab54a6a931002ae Mon Sep 17 00:00:00 2001 From: Agusti Fernandez Pardo Date: Tue, 17 May 2022 22:25:38 +0200 Subject: [PATCH 05/22] fix: add back commented out base params --- lib/validations/event-type.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/validations/event-type.ts b/lib/validations/event-type.ts index 309ab048dc..cd4392ce32 100644 --- a/lib/validations/event-type.ts +++ b/lib/validations/event-type.ts @@ -32,7 +32,7 @@ export const schemaEventTypeBaseBodyParams = EventType.pick({ successRedirectUrl: true, }).partial(); -// const schemaEventTypeBaseParams = z +const schemaEventTypeBaseParams = z .object({ title: z.string(), slug: z.string(), From fa157961bea6aff90647408b7b8ae7d2026a586b Mon Sep 17 00:00:00 2001 From: Agusti Fernandez Pardo Date: Tue, 17 May 2022 22:32:49 +0200 Subject: [PATCH 06/22] fix: dont parse on read event-type --- lib/validations/event-type.ts | 1 - pages/api/event-types/index.ts | 2 +- 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/lib/validations/event-type.ts b/lib/validations/event-type.ts index cd4392ce32..d341a49f5e 100644 --- a/lib/validations/event-type.ts +++ b/lib/validations/event-type.ts @@ -39,7 +39,6 @@ const schemaEventTypeBaseParams = z description: z.string().optional().nullable(), length: z.number().int(), locations: jsonSchema.optional().nullable().or(z.null()), - metadata: z.any().optional().nullable().or(z.null()), recurringEvent: jsonSchema.optional().nullable().or(z.null()), }) .strict(); diff --git a/pages/api/event-types/index.ts b/pages/api/event-types/index.ts index 163fa501fb..726895fe6c 100644 --- a/pages/api/event-types/index.ts +++ b/pages/api/event-types/index.ts @@ -30,7 +30,7 @@ async function createOrlistAllEventTypes( * description: No event types were found */ const data = await prisma.eventType.findMany({ where: { userId } }); - const event_types = data.map((eventType) => schemaEventTypeReadPublic.parse(eventType)); + const event_types = data.map((eventType) => eventType); if (event_types) res.status(200).json({ event_types }); else (error: Error) => From f2ea38b44008c6faf5be4bcec8fc2d73dffab898 Mon Sep 17 00:00:00 2001 From: Agusti Fernandez Pardo Date: Tue, 17 May 2022 22:37:43 +0200 Subject: [PATCH 07/22] fix: parse metadata --- pages/api/event-types/index.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pages/api/event-types/index.ts b/pages/api/event-types/index.ts index 726895fe6c..932a10a11c 100644 --- a/pages/api/event-types/index.ts +++ b/pages/api/event-types/index.ts @@ -30,7 +30,7 @@ async function createOrlistAllEventTypes( * description: No event types were found */ const data = await prisma.eventType.findMany({ where: { userId } }); - const event_types = data.map((eventType) => eventType); + const event_types = data.map(({ metadata }) => (metadata = JSON.parse(`${metadata}`))); if (event_types) res.status(200).json({ event_types }); else (error: Error) => From f8554031aecc26c1a8a2280ab9ad0ae794bc8812 Mon Sep 17 00:00:00 2001 From: Agusti Fernandez Pardo Date: Tue, 17 May 2022 22:41:54 +0200 Subject: [PATCH 08/22] fix: pass data directly --- pages/api/event-types/index.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pages/api/event-types/index.ts b/pages/api/event-types/index.ts index 932a10a11c..2b97a3b5fc 100644 --- a/pages/api/event-types/index.ts +++ b/pages/api/event-types/index.ts @@ -30,8 +30,8 @@ async function createOrlistAllEventTypes( * description: No event types were found */ const data = await prisma.eventType.findMany({ where: { userId } }); - const event_types = data.map(({ metadata }) => (metadata = JSON.parse(`${metadata}`))); - if (event_types) res.status(200).json({ event_types }); + // const event_types = data.map(({ metadata }) => (metadata = JSON.parse(`${metadata}`))); + if (data) res.status(200).json({ event_types: data }); else (error: Error) => res.status(404).json({ From 47ce92714b085b005748a86ccb485e8b91d61d8f Mon Sep 17 00:00:00 2001 From: Agusti Fernandez Pardo Date: Tue, 17 May 2022 22:49:12 +0200 Subject: [PATCH 09/22] fix rewrite metadata --- pages/api/event-types/index.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pages/api/event-types/index.ts b/pages/api/event-types/index.ts index 2b97a3b5fc..cd5e97fc92 100644 --- a/pages/api/event-types/index.ts +++ b/pages/api/event-types/index.ts @@ -30,8 +30,8 @@ async function createOrlistAllEventTypes( * description: No event types were found */ const data = await prisma.eventType.findMany({ where: { userId } }); - // const event_types = data.map(({ metadata }) => (metadata = JSON.parse(`${metadata}`))); - if (data) res.status(200).json({ event_types: data }); + const event_types = data.map((eventType) => (eventType.metadata = {})); + if (event_types) res.status(200).json({ event_types }); else (error: Error) => res.status(404).json({ From 075808ce404529dea681344d9f84d8892cbc2e29 Mon Sep 17 00:00:00 2001 From: Agusti Fernandez Pardo Date: Wed, 18 May 2022 13:55:05 +0200 Subject: [PATCH 10/22] fix event types --- lib/validations/event-type.ts | 4 +++- pages/api/event-types/index.ts | 2 +- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/lib/validations/event-type.ts b/lib/validations/event-type.ts index d341a49f5e..34ca8e0a14 100644 --- a/lib/validations/event-type.ts +++ b/lib/validations/event-type.ts @@ -39,6 +39,7 @@ const schemaEventTypeBaseParams = z description: z.string().optional().nullable(), length: z.number().int(), locations: jsonSchema.optional().nullable().or(z.null()), + metadata: jsonSchema.optional().nullable().or(z.null()), recurringEvent: jsonSchema.optional().nullable().or(z.null()), }) .strict(); @@ -79,8 +80,9 @@ export const schemaEventTypeReadPublic = EventType.pick({ beforeEventBuffer: true, afterEventBuffer: true, schedulingType: true, + metadata: true, price: true, currency: true, slotInterval: true, successRedirectUrl: true, -}).partial(); +}).merge(schemaEventTypeBaseParams); diff --git a/pages/api/event-types/index.ts b/pages/api/event-types/index.ts index cd5e97fc92..163fa501fb 100644 --- a/pages/api/event-types/index.ts +++ b/pages/api/event-types/index.ts @@ -30,7 +30,7 @@ async function createOrlistAllEventTypes( * description: No event types were found */ const data = await prisma.eventType.findMany({ where: { userId } }); - const event_types = data.map((eventType) => (eventType.metadata = {})); + const event_types = data.map((eventType) => schemaEventTypeReadPublic.parse(eventType)); if (event_types) res.status(200).json({ event_types }); else (error: Error) => From a2c7eed853aeaddfcccf331c83e0735ca9fd4240 Mon Sep 17 00:00:00 2001 From: Agusti Fernandez Pardo Date: Wed, 18 May 2022 14:03:38 +0200 Subject: [PATCH 11/22] fix: add back metadata true --- lib/validations/event-type.ts | 1 + 1 file changed, 1 insertion(+) diff --git a/lib/validations/event-type.ts b/lib/validations/event-type.ts index 34ca8e0a14..3665681dff 100644 --- a/lib/validations/event-type.ts +++ b/lib/validations/event-type.ts @@ -29,6 +29,7 @@ export const schemaEventTypeBaseBodyParams = EventType.pick({ price: true, currency: true, slotInterval: true, + metadata: true, successRedirectUrl: true, }).partial(); From f04f5d8ca89f2519ba19551f5c414339ed8d6f0d Mon Sep 17 00:00:00 2001 From: Agusti Fernandez Pardo Date: Wed, 18 May 2022 14:08:52 +0200 Subject: [PATCH 12/22] fix: add partial() --- lib/validations/event-type.ts | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/lib/validations/event-type.ts b/lib/validations/event-type.ts index 3665681dff..2f22c333bb 100644 --- a/lib/validations/event-type.ts +++ b/lib/validations/event-type.ts @@ -86,4 +86,6 @@ export const schemaEventTypeReadPublic = EventType.pick({ currency: true, slotInterval: true, successRedirectUrl: true, -}).merge(schemaEventTypeBaseParams); +}) + .merge(schemaEventTypeBaseParams) + .partial(); From e183df1a1b45fd7e9891e29eeb43938bfe0757db Mon Sep 17 00:00:00 2001 From: Agusti Fernandez Pardo Date: Wed, 18 May 2022 14:13:29 +0200 Subject: [PATCH 13/22] fix: add back metadata to pick --- lib/validations/event-type.ts | 1 - 1 file changed, 1 deletion(-) diff --git a/lib/validations/event-type.ts b/lib/validations/event-type.ts index 2f22c333bb..595217a37a 100644 --- a/lib/validations/event-type.ts +++ b/lib/validations/event-type.ts @@ -81,7 +81,6 @@ export const schemaEventTypeReadPublic = EventType.pick({ beforeEventBuffer: true, afterEventBuffer: true, schedulingType: true, - metadata: true, price: true, currency: true, slotInterval: true, From 0ca974867497ee062eb9696dc61d494b8d995e00 Mon Sep 17 00:00:00 2001 From: Agusti Fernandez Pardo Date: Wed, 18 May 2022 14:27:30 +0200 Subject: [PATCH 14/22] fix: dont throw err on bad query --- pages/api/booking-references/[id].ts | 5 ++++- pages/api/bookings/[id].ts | 5 ++++- pages/api/custom-inputs/[id].ts | 5 ++++- pages/api/destination-calendars/[id].ts | 5 ++++- pages/api/event-references/[id].ts | 5 ++++- pages/api/event-types/[id].ts | 5 ++++- pages/api/hooks/[id].ts | 5 ++++- pages/api/memberships/[id].ts | 5 ++++- pages/api/schedules/[id].ts | 5 ++++- pages/api/selected-calendars/[id].ts | 5 ++++- pages/api/teams/[id].ts | 5 ++++- pages/api/users/[id].ts | 5 ++++- 12 files changed, 48 insertions(+), 12 deletions(-) diff --git a/pages/api/booking-references/[id].ts b/pages/api/booking-references/[id].ts index 8041617bb3..702b77c1a5 100644 --- a/pages/api/booking-references/[id].ts +++ b/pages/api/booking-references/[id].ts @@ -18,7 +18,10 @@ export async function bookingReferenceById( res: NextApiResponse ) { const safeQuery = schemaQueryIdParseInt.safeParse(query); - if (!safeQuery.success) throw new Error("Invalid request query", safeQuery.error); + if (!safeQuery.success) { + res.status(400).json({ message: "Your query was invalid" }); + return; + } // const userWithBookings = await prisma.user.findUnique({ // where: { id: userId }, // include: { bookings: true }, diff --git a/pages/api/bookings/[id].ts b/pages/api/bookings/[id].ts index b6a37122c1..7e17c9613a 100644 --- a/pages/api/bookings/[id].ts +++ b/pages/api/bookings/[id].ts @@ -15,7 +15,10 @@ export async function bookingById( res: NextApiResponse ) { const safeQuery = schemaQueryIdParseInt.safeParse(query); - if (!safeQuery.success) throw new Error("Invalid request query", safeQuery.error); + if (!safeQuery.success) { + res.status(400).json({ message: "Your query was invalid" }); + return; + } const userWithBookings = await prisma.user.findUnique({ where: { id: userId }, include: { bookings: true }, diff --git a/pages/api/custom-inputs/[id].ts b/pages/api/custom-inputs/[id].ts index 8c20771a45..7423a10b99 100644 --- a/pages/api/custom-inputs/[id].ts +++ b/pages/api/custom-inputs/[id].ts @@ -77,7 +77,10 @@ async function eventTypeById( ) { const safeQuery = schemaQueryIdParseInt.safeParse(query); const safeBody = schemaEventTypeCustomInputBodyParams.safeParse(body); - if (!safeQuery.success) throw new Error("Invalid request query", safeQuery.error); + if (!safeQuery.success) { + res.status(400).json({ message: "Your query was invalid" }); + return; + } const data = await prisma.eventType.findMany({ where: { userId } }); const userEventTypes = data.map((eventType) => eventType.id); const userEventTypeCustomInputs = await prisma.eventTypeCustomInput.findMany({ diff --git a/pages/api/destination-calendars/[id].ts b/pages/api/destination-calendars/[id].ts index 675f8c2e28..528b9e5f2d 100644 --- a/pages/api/destination-calendars/[id].ts +++ b/pages/api/destination-calendars/[id].ts @@ -19,7 +19,10 @@ export async function destionationCalendarById( ) { const safeQuery = schemaQueryIdParseInt.safeParse(query); const safeBody = schemaDestinationCalendarEditBodyParams.safeParse(body); - if (!safeQuery.success) throw new Error("Invalid request query", safeQuery.error); + if (!safeQuery.success) { + res.status(400).json({ message: "Your query was invalid" }); + return; + } const data = await prisma.destinationCalendar.findMany({ where: { userId } }); const userDestinationCalendars = data.map((destinationCalendar) => destinationCalendar.id); // FIXME: Should we also check ownership of bokingId and eventTypeId to avoid users cross-pollinating other users calendars. diff --git a/pages/api/event-references/[id].ts b/pages/api/event-references/[id].ts index 97bb53bc82..7a72fea4c7 100644 --- a/pages/api/event-references/[id].ts +++ b/pages/api/event-references/[id].ts @@ -19,7 +19,10 @@ export async function dailyEventReferenceById( ) { const safeQuery = schemaQueryIdParseInt.safeParse(query); const safeBody = schemaDailyEventReferenceEditBodyParams.safeParse(body); - if (!safeQuery.success) throw new Error("Invalid request query", safeQuery.error); + if (!safeQuery.success) { + res.status(400).json({ message: "Your query was invalid" }); + return; + } const userBookings = await prisma.booking.findMany({ where: { userId } }); const userBookingIds: number[] = userBookings.map((booking) => booking.id); const userBookingDailyEventReferences = await prisma.dailyEventReference.findMany({ diff --git a/pages/api/event-types/[id].ts b/pages/api/event-types/[id].ts index 224a7c9995..6319b48b9e 100644 --- a/pages/api/event-types/[id].ts +++ b/pages/api/event-types/[id].ts @@ -15,7 +15,10 @@ export async function eventTypeById( res: NextApiResponse ) { const safeQuery = schemaQueryIdParseInt.safeParse(query); - if (!safeQuery.success) throw new Error("Invalid request query", safeQuery.error); + if (!safeQuery.success) { + res.status(400).json({ message: "Your query was invalid" }); + return; + } const data = await prisma.eventType.findMany({ where: { userId } }); const userEventTypes = data.map((eventType) => eventType.id); if (!userEventTypes.includes(safeQuery.data.id)) res.status(401).json({ message: "Unauthorized" }); diff --git a/pages/api/hooks/[id].ts b/pages/api/hooks/[id].ts index cc017d8e8f..dbdfc1a17e 100644 --- a/pages/api/hooks/[id].ts +++ b/pages/api/hooks/[id].ts @@ -12,7 +12,10 @@ export async function WebhookById( res: NextApiResponse ) { const safeQuery = schemaQueryIdAsString.safeParse(query); - if (!safeQuery.success) throw new Error("Invalid request query", safeQuery.error); + if (!safeQuery.success) { + res.status(400).json({ message: "Your query was invalid" }); + return; + } const data = await prisma.webhook.findMany({ where: { userId } }); const userWebhooks = data.map((webhook) => webhook.id); if (!userWebhooks.includes(safeQuery.data.id)) res.status(401).json({ message: "Unauthorized" }); diff --git a/pages/api/memberships/[id].ts b/pages/api/memberships/[id].ts index 1b9ceaada8..ea99860d14 100644 --- a/pages/api/memberships/[id].ts +++ b/pages/api/memberships/[id].ts @@ -12,7 +12,10 @@ export async function membershipById( res: NextApiResponse ) { const safeQuery = schemaQueryIdAsString.safeParse(query); - if (!safeQuery.success) throw new Error("Invalid request query", safeQuery.error); + if (!safeQuery.success) { + res.status(400).json({ message: "Your query was invalid" }); + return; + } // This is how we set the userId and teamId in the query for managing compoundId. const [paramUserId, teamId] = safeQuery.data.id.split("_"); if (parseInt(paramUserId) !== userId) res.status(401).json({ message: "Unauthorized" }); diff --git a/pages/api/schedules/[id].ts b/pages/api/schedules/[id].ts index a6e65a87a3..305cc5c51b 100644 --- a/pages/api/schedules/[id].ts +++ b/pages/api/schedules/[id].ts @@ -16,7 +16,10 @@ export async function scheduleById( ) { const safeQuery = schemaQueryIdParseInt.safeParse(query); const safeBody = schemaScheduleBodyParams.safeParse(body); - if (!safeQuery.success) throw new Error("Invalid request query", safeQuery.error); + if (!safeQuery.success) { + res.status(400).json({ message: "Your query was invalid" }); + return; + } const userSchedules = await prisma.schedule.findMany({ where: { userId } }); const userScheduleIds = userSchedules.map((schedule) => schedule.id); if (!userScheduleIds.includes(safeQuery.data.id)) res.status(401).json({ message: "Unauthorized" }); diff --git a/pages/api/selected-calendars/[id].ts b/pages/api/selected-calendars/[id].ts index 5081da3d87..88dca61806 100644 --- a/pages/api/selected-calendars/[id].ts +++ b/pages/api/selected-calendars/[id].ts @@ -16,7 +16,10 @@ export async function selectedCalendarById( ) { const safeQuery = schemaQueryIdAsString.safeParse(query); const safeBody = schemaSelectedCalendarBodyParams.safeParse(body); - if (!safeQuery.success) throw new Error("Invalid request query", safeQuery.error); + if (!safeQuery.success) { + res.status(400).json({ message: "Your query was invalid" }); + return; + } // This is how we set the userId and externalId in the query for managing compoundId. const [paramUserId, integration, externalId] = safeQuery.data.id.split("_"); if (userId !== parseInt(paramUserId)) res.status(401).json({ message: "Unauthorized" }); diff --git a/pages/api/teams/[id].ts b/pages/api/teams/[id].ts index 4c8262efdc..2cfd371749 100644 --- a/pages/api/teams/[id].ts +++ b/pages/api/teams/[id].ts @@ -77,7 +77,10 @@ export async function teamById( ) { const safeQuery = schemaQueryIdParseInt.safeParse(query); const safeBody = schemaTeamBodyParams.safeParse(body); - if (!safeQuery.success) throw new Error("Invalid request query", safeQuery.error); + if (!safeQuery.success) { + res.status(400).json({ message: "Your query was invalid" }); + return; + } const userWithMemberships = await prisma.membership.findMany({ where: { userId: userId }, }); diff --git a/pages/api/users/[id].ts b/pages/api/users/[id].ts index b73abaf520..7539d513b8 100644 --- a/pages/api/users/[id].ts +++ b/pages/api/users/[id].ts @@ -16,7 +16,10 @@ export async function userById( ) { const safeQuery = schemaQueryIdParseInt.safeParse(query); console.log(body); - if (!safeQuery.success) throw new Error("Invalid request query", safeQuery.error); + if (!safeQuery.success) { + res.status(400).json({ message: "Your query was invalid" }); + return; + } if (safeQuery.data.id !== userId) res.status(401).json({ message: "Unauthorized" }); else { switch (method) { From 8481a96829dad81fa0fab32c3b04c2f35f3ff811 Mon Sep 17 00:00:00 2001 From: Agusti Fernandez Pardo Date: Wed, 18 May 2022 14:41:55 +0200 Subject: [PATCH 15/22] fix: null or --- lib/validations/event-type.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/validations/event-type.ts b/lib/validations/event-type.ts index 595217a37a..28dd76cf11 100644 --- a/lib/validations/event-type.ts +++ b/lib/validations/event-type.ts @@ -40,7 +40,7 @@ const schemaEventTypeBaseParams = z description: z.string().optional().nullable(), length: z.number().int(), locations: jsonSchema.optional().nullable().or(z.null()), - metadata: jsonSchema.optional().nullable().or(z.null()), + metadata: z.null().or(jsonSchema).optional().nullable(), recurringEvent: jsonSchema.optional().nullable().or(z.null()), }) .strict(); From 91f9405fa0f1b11e32c95871a8d5c1654e3fe230 Mon Sep 17 00:00:00 2001 From: Agusti Fernandez Pardo Date: Wed, 18 May 2022 14:48:11 +0200 Subject: [PATCH 16/22] fix: metadata --- lib/validations/event-type.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/validations/event-type.ts b/lib/validations/event-type.ts index 28dd76cf11..10e3e85fb3 100644 --- a/lib/validations/event-type.ts +++ b/lib/validations/event-type.ts @@ -40,7 +40,7 @@ const schemaEventTypeBaseParams = z description: z.string().optional().nullable(), length: z.number().int(), locations: jsonSchema.optional().nullable().or(z.null()), - metadata: z.null().or(jsonSchema).optional().nullable(), + metadata: jsonSchema.optional().nullable().nullish(), recurringEvent: jsonSchema.optional().nullable().or(z.null()), }) .strict(); From 8add68c668ff0e8a21087bb0ea2cedb74ea8475f Mon Sep 17 00:00:00 2001 From: Agusti Fernandez Pardo Date: Wed, 18 May 2022 14:55:05 +0200 Subject: [PATCH 17/22] fix: no metadata-true --- lib/validations/event-type.ts | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/lib/validations/event-type.ts b/lib/validations/event-type.ts index 10e3e85fb3..72af352afe 100644 --- a/lib/validations/event-type.ts +++ b/lib/validations/event-type.ts @@ -29,11 +29,10 @@ export const schemaEventTypeBaseBodyParams = EventType.pick({ price: true, currency: true, slotInterval: true, - metadata: true, successRedirectUrl: true, }).partial(); -const schemaEventTypeBaseParams = z +const schemaEventTypeCreateParams = z .object({ title: z.string(), slug: z.string(), @@ -45,7 +44,8 @@ const schemaEventTypeBaseParams = z }) .strict(); -export const schemaEventTypeCreateBodyParams = schemaEventTypeBaseBodyParams.merge(schemaEventTypeBaseParams); +export const schemaEventTypeCreateBodyParams = + schemaEventTypeBaseBodyParams.merge(schemaEventTypeCreateParams); const schemaEventTypeEditParams = z .object({ @@ -86,5 +86,5 @@ export const schemaEventTypeReadPublic = EventType.pick({ slotInterval: true, successRedirectUrl: true, }) - .merge(schemaEventTypeBaseParams) + .merge(schemaEventTypeCreateParams) .partial(); From db09aeb50ad5530aeb929777f5cecc714b261b59 Mon Sep 17 00:00:00 2001 From: Agusti Fernandez Pardo Date: Wed, 18 May 2022 15:00:09 +0200 Subject: [PATCH 18/22] fix: dont merge on read --- lib/validations/event-type.ts | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/lib/validations/event-type.ts b/lib/validations/event-type.ts index 72af352afe..4404390a43 100644 --- a/lib/validations/event-type.ts +++ b/lib/validations/event-type.ts @@ -85,6 +85,4 @@ export const schemaEventTypeReadPublic = EventType.pick({ currency: true, slotInterval: true, successRedirectUrl: true, -}) - .merge(schemaEventTypeCreateParams) - .partial(); +}).partial(); From e25d0d79a07ec7f002c94a41bc44721b3ac6f5bb Mon Sep 17 00:00:00 2001 From: Agusti Fernandez Pardo Date: Wed, 18 May 2022 15:04:44 +0200 Subject: [PATCH 19/22] fix: merge metadata jsonSchema nullable nullish --- lib/validations/event-type.ts | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/lib/validations/event-type.ts b/lib/validations/event-type.ts index 4404390a43..69fd0173ca 100644 --- a/lib/validations/event-type.ts +++ b/lib/validations/event-type.ts @@ -85,4 +85,6 @@ export const schemaEventTypeReadPublic = EventType.pick({ currency: true, slotInterval: true, successRedirectUrl: true, -}).partial(); +}) + .merge(z.object({ metadata: jsonSchema.nullable().nullish() })) + .partial(); From c5dcf428075556acb5438cbcc8a1c80f8a2e8a80 Mon Sep 17 00:00:00 2001 From: Agusti Fernandez Pardo Date: Wed, 18 May 2022 15:12:29 +0200 Subject: [PATCH 20/22] fix: any --- lib/validations/event-type.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lib/validations/event-type.ts b/lib/validations/event-type.ts index 69fd0173ca..48382ecc3a 100644 --- a/lib/validations/event-type.ts +++ b/lib/validations/event-type.ts @@ -39,7 +39,7 @@ const schemaEventTypeCreateParams = z description: z.string().optional().nullable(), length: z.number().int(), locations: jsonSchema.optional().nullable().or(z.null()), - metadata: jsonSchema.optional().nullable().nullish(), + metadata: z.any().optional().nullable().nullish(), recurringEvent: jsonSchema.optional().nullable().or(z.null()), }) .strict(); @@ -86,5 +86,5 @@ export const schemaEventTypeReadPublic = EventType.pick({ slotInterval: true, successRedirectUrl: true, }) - .merge(z.object({ metadata: jsonSchema.nullable().nullish() })) + .merge(z.object({ metadata: z.any().nullable().nullish() })) .partial(); From d5ecb383b41cb29aa7f6a24855a3bfea73a91f32 Mon Sep 17 00:00:00 2001 From: Agusti Fernandez Pardo Date: Wed, 18 May 2022 15:16:16 +0200 Subject: [PATCH 21/22] fix: no metadata --- lib/validations/event-type.ts | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/lib/validations/event-type.ts b/lib/validations/event-type.ts index 48382ecc3a..944ab837ae 100644 --- a/lib/validations/event-type.ts +++ b/lib/validations/event-type.ts @@ -85,6 +85,4 @@ export const schemaEventTypeReadPublic = EventType.pick({ currency: true, slotInterval: true, successRedirectUrl: true, -}) - .merge(z.object({ metadata: z.any().nullable().nullish() })) - .partial(); +}).partial(); From f29124866c58cca95e8219a5f2c495ca7e5935b7 Mon Sep 17 00:00:00 2001 From: Agusti Fernandez Pardo Date: Wed, 18 May 2022 15:23:18 +0200 Subject: [PATCH 22/22] fix: recurring and metadata as jsonSchema on read too --- lib/validations/event-type.ts | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/lib/validations/event-type.ts b/lib/validations/event-type.ts index 944ab837ae..3357c53794 100644 --- a/lib/validations/event-type.ts +++ b/lib/validations/event-type.ts @@ -85,4 +85,12 @@ export const schemaEventTypeReadPublic = EventType.pick({ currency: true, slotInterval: true, successRedirectUrl: true, -}).partial(); + description: true, +}) + .merge( + z.object({ + recurringEvent: jsonSchema.nullable(), + metadata: jsonSchema.nullable(), + }) + ) + .strict();