chrishoermann / zod-prisma-types

Generator creates zod types for your prisma models with advanced validation
Other
626 stars 47 forks source link

fail to create a custom schema with regex #132

Closed DGCP3 closed 1 year ago

DGCP3 commented 1 year ago

prisma schema

model User_Account {
  id             String           @id @default(uuid())
  email          String           @unique
  password       String /// @zod.custom.use(z.string().min(8, { message: 'Password must be at least 8 characters long' }).regex(/^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)[a-zA-Z\d]{8,}$/, { message: 'Password must contain at least one uppercase letter, one lowercase letter, and one number' }))
  username       String
  authToken      String?
  Project        Project[]
  created        DateTime         @default(now())
  updated        DateTime         @updatedAt
  Task_List      Task_List[]
  Project_Member Project_Member[]
}

generated

export const User_AccountSchema = z.object({
  id: z.string().uuid(),
  email: z.string(),
  password: z.string().min(8, { message: 'Password must be at least 8 characters long' }).regex(/^(?=.*[a-z])(?=.*[A-Z],
  username: z.string(),
  authToken: z.string().nullable(),
  created: z.coerce.date(),
  updated: z.coerce.date(),
})
DGCP3 commented 1 year ago

this worked for me

model User_Account {
  id             String           @id @default(uuid())
  email          String           @unique
  password       String /// @zod.custom.use(z.string().min(8, { message: 'Password must be at least 8 characters long' }).regex(new RegExp('/^(?=.*[a-z])(?=.*[A-Z])(?=.*d)[a-zA-Zd]{8,}$/'), {message:'Password must contain at least one uppercase letter, one lowercase letter, and one number',}));
  username       String
  authToken      String?
  Project        Project[]
  created        DateTime         @default(now())
  updated        DateTime         @updatedAt
  Task_List      Task_List[]
  Project_Member Project_Member[]
}
export const User_AccountSchema = z.object({
  id: z.string().uuid(),
  email: z.string(),
  /**
   * ;
   */
  password: z.string().min(8, { message: 'Password must be at least 8 characters long' }).regex(new RegExp('/^(?=.*[a-z])(?=.*[A-Z])(?=.*d)[a-zA-Zd]{8,}$/'), {message:'Password must contain at least one uppercase letter, one lowercase letter, and one number',}),
  username: z.string(),
  authToken: z.string().nullable(),
  created: z.coerce.date(),
  updated: z.coerce.date(),
})