import { createInsertSchema, createSelectSchema } from "drizzle-zod"
import { users } from "../schema"
export const UsersInsertSchema = createInsertSchema(users)
export type UsersInsert = z.infer<typeof UsersInsertSchema>
export const UserSignupRequestSchema = UsersInsertSchema.pick({ email: true, username_slug: true }).extend({
email: z.email(),
password: z.string().regex(/^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*[^a-zA-Z0-9]).{8,128}$/, "Password must be 8-128 characters and include uppercase, lowercase, number, and special character"),
username_slug: UsersInsertSchema.shape.username_slug.refine((val) => /^[a-z0-9]+(?:-[a-z0-9]+)*$/.test(val), { message: "username_slug must be a lowercase slug (letters, numbers, hyphens)" })
})
export const UserLoginRequestSchema = UserSignupRequestSchema.pick({ email: true, password: true })
export type UserLoginRequest = z.infer<typeof UserLoginRequestSchema>
import { createInsertSchema, createSelectSchema } from "drizzle-zod"
import { users } from "../schema"
export const UsersInsertSchema = createInsertSchema(users)
export type UsersInsert = z.infer<typeof UsersInsertSchema>
export const UserSignupRequestSchema = UsersInsertSchema.pick({ email: true, username_slug: true }).extend({
email: z.email(),
password: z.string().regex(/^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*[^a-zA-Z0-9]).{8,128}$/, "Password must be 8-128 characters and include uppercase, lowercase, number, and special character"),
username_slug: UsersInsertSchema.shape.username_slug.refine((val) => /^[a-z0-9]+(?:-[a-z0-9]+)*$/.test(val), { message: "username_slug must be a lowercase slug (letters, numbers, hyphens)" })
})
export const UserLoginRequestSchema = UserSignupRequestSchema.pick({ email: true, password: true })
export type UserLoginRequest = z.infer<typeof UserLoginRequestSchema>