From b5b48e7992c9aa4e3b426fd9b9505ca0b16eda9f Mon Sep 17 00:00:00 2001 From: zomars Date: Tue, 14 Jun 2022 14:07:54 -0600 Subject: [PATCH] Updates user metadata schemas --- packages/app-store/vital/api/save.ts | 9 ++------- packages/prisma/schema.prisma | 1 + packages/prisma/zod-utils.ts | 14 ++++++++++++++ 3 files changed, 17 insertions(+), 7 deletions(-) diff --git a/packages/app-store/vital/api/save.ts b/packages/app-store/vital/api/save.ts index c3b45bad88..96bb9a5ee5 100644 --- a/packages/app-store/vital/api/save.ts +++ b/packages/app-store/vital/api/save.ts @@ -1,8 +1,9 @@ import { Prisma } from "@prisma/client"; import type { NextApiRequest, NextApiResponse } from "next"; -import { z, ZodError } from "zod"; +import { ZodError } from "zod"; import prisma from "@calcom/prisma"; +import { vitalSettingsUpdateSchema } from "@calcom/prisma/zod-utils"; export type VitalSettingsResponse = { connected: boolean; @@ -10,12 +11,6 @@ export type VitalSettingsResponse = { selectedParam: string; }; -const vitalSettingsUpdateSchema = z.object({ - connected: z.boolean().optional(), - selectedParam: z.string().optional(), - sleepValue: z.number().optional(), -}); - const handler = async ( req: NextApiRequest, res: NextApiResponse diff --git a/packages/prisma/schema.prisma b/packages/prisma/schema.prisma index f97e0e1dc5..9d41a2d201 100644 --- a/packages/prisma/schema.prisma +++ b/packages/prisma/schema.prisma @@ -165,6 +165,7 @@ model User { away Boolean @default(false) // participate in dynamic group booking or not allowDynamicBooking Boolean? @default(true) + /// @zod.custom(imports.userMetadata) metadata Json? verified Boolean? @default(false) role UserPermissionRole @default(USER) diff --git a/packages/prisma/zod-utils.ts b/packages/prisma/zod-utils.ts index da4cef381c..cbfe03403d 100644 --- a/packages/prisma/zod-utils.ts +++ b/packages/prisma/zod-utils.ts @@ -94,3 +94,17 @@ export const extendedBookingCreateBody = bookingCreateBodySchema.merge( rescheduleReason: z.string().optional(), }) ); + +export const vitalSettingsUpdateSchema = z.object({ + connected: z.boolean().optional(), + selectedParam: z.string().optional(), + sleepValue: z.number().optional(), +}); + +export const userMetadata = z + .object({ + proPaidForByTeamId: z.string().optional(), + stripeCustomerId: z.string().optional(), + vitalSettings: vitalSettingsUpdateSchema.optional(), + }) + .nullable();