import { z } from 'zod' export const createUserSchema = z.object({ username: z .string() .min(3, 'Username must be at least 3 characters') .max(20, 'Username must be at most 20 characters') .regex(/^[a-zA-Z0-9_-]+$/, 'Username can only contain letters, numbers, _ and -'), mail: z.string().email('Invalid email address'), password: z.string().min(6, 'Password must be at least 6 characters'), rank: z.coerce.number().int().min(1).max(7).default(1), motto: z.string().max(127).default(''), }) export const updateUserSchema = z.object({ username: z.string().min(3).max(20).optional(), mail: z.string().email().optional(), rank: z.number().int().min(1).max(7).optional(), motto: z.string().max(127).optional(), credits: z.number().int().min(0).max(2147483647).optional(), pixels: z.number().int().min(0).max(2147483647).optional(), diamonds: z.number().int().min(0).max(2147483647).optional(), duckets: z.number().int().min(0).max(2147483647).optional(), }) export const banUserSchema = z.object({ userId: z.coerce.number().int().positive(), reason: z.string().min(1, 'Ban reason is required').max(500), duration: z.coerce.number().int().min(0, 'Duration must be 0 or more hours'), type: z.enum(['account', 'ip', 'machine']).default('account'), ip: z.string().optional(), }) export const giveBadgeSchema = z.object({ userId: z.coerce.number().int().positive(), badgeCode: z.string().min(1, 'Badge code is required').max(20), }) export type CreateUserInput = z.infer export type UpdateUserInput = z.infer export type BanUserInput = z.infer export type GiveBadgeInput = z.infer