import { z } from "zod"; import { HOUSEHOLD_ROLES, STORAGE_LOCATION_TYPES } from "@app/shared-types"; import { uuidSchema } from "./common.js"; export const createHouseholdInputSchema = z.object({ name: z.string().min(1).max(80).trim(), weeklyBudgetMinor: z.number().int().min(0).max(10_000_000).optional(), /** ISO 4217 – hushållets valuta (i18n-spec §20). Default SEK i databasen. */ currencyCode: z .string() .length(3) .regex(/^[A-Za-z]{3}$/) .transform((v) => v.toUpperCase()) .optional(), }); export type CreateHouseholdInput = z.infer; export const updateHouseholdInputSchema = createHouseholdInputSchema.partial(); export type UpdateHouseholdInput = z.infer; export const joinHouseholdInputSchema = z.object({ inviteCode: z.string().min(4).max(20).trim(), }); export type JoinHouseholdInput = z.infer; export const updateMemberInputSchema = z.object({ role: z.enum(HOUSEHOLD_ROLES).optional(), portionFactor: z.number().min(0.1).max(3).optional(), }); export type UpdateMemberInput = z.infer; export const memberParamSchema = z.object({ id: uuidSchema, userId: uuidSchema, }); export const createStorageLocationInputSchema = z.object({ type: z.enum(STORAGE_LOCATION_TYPES), name: z.string().min(1).max(60).trim(), sublocations: z.array(z.string().min(1).max(60)).max(20).default([]), }); export type CreateStorageLocationInput = z.infer; export const updateStorageLocationInputSchema = createStorageLocationInputSchema.partial(); export type UpdateStorageLocationInput = z.infer;