Prisma zod enum validation
I have this prisma schema:
And this zod validation:
enum RealEstateType {
house
apartment
office
garage
land
store
industry
other
}
...
model RealEstate {
id Int @id @default(autoincrement())
status RealEstateStatus
title String
description String
availableFrom DateTime
createdAt DateTime @default(now())
updatedAt DateTime @updatedAt
userId String
user UserData @relation(fields: [userId], references: [userId])
type RealEstateType
contactId String?
contact UserData? @relation(name: "RealEstateContact", fields: [contactId], references: [userId])
favorites Favorite[]
Message Message[]
documents Document[]
energy EnergyEfficiency[]
location RealEstateLocation?
features RealEstateFeatures?
pricing RealEstatePricing?
@@index([userId])
@@index([contactId])
}enum RealEstateType {
house
apartment
office
garage
land
store
industry
other
}
...
model RealEstate {
id Int @id @default(autoincrement())
status RealEstateStatus
title String
description String
availableFrom DateTime
createdAt DateTime @default(now())
updatedAt DateTime @updatedAt
userId String
user UserData @relation(fields: [userId], references: [userId])
type RealEstateType
contactId String?
contact UserData? @relation(name: "RealEstateContact", fields: [contactId], references: [userId])
favorites Favorite[]
Message Message[]
documents Document[]
energy EnergyEfficiency[]
location RealEstateLocation?
features RealEstateFeatures?
pricing RealEstatePricing?
@@index([userId])
@@index([contactId])
}And this zod validation:
const apartmentTypes = [
'house',
'apartment',
'office',
'garage',
'land',
'store',
'industry',
'other'
] as const;
export const createRealEstateSchema = z.object({
type: z.enum(apartmentTypes),
title: z.string().min(3).max(30),
description: z.string().min(3).max(30),
availableFrom: z.date(),
contactId: z.string().optional(),
location: locationSchema.optional(),
features: featuresSchema.optional(),
pricing: pricingSchema.optional(),
documents: z.array(createDocumentSchema),
});const apartmentTypes = [
'house',
'apartment',
'office',
'garage',
'land',
'store',
'industry',
'other'
] as const;
export const createRealEstateSchema = z.object({
type: z.enum(apartmentTypes),
title: z.string().min(3).max(30),
description: z.string().min(3).max(30),
availableFrom: z.date(),
contactId: z.string().optional(),
location: locationSchema.optional(),
features: featuresSchema.optional(),
pricing: pricingSchema.optional(),
documents: z.array(createDocumentSchema),
});