import { z } from "zod";

// See schemas/auth.ts for the shared client/server validation rationale.

/** Payload accepted by `PATCH /profile/diet`. `null` clears the profile's regime — this step of the profile journey is skippable. */
export const updateDietSchema = z.object({
  dietId: z.number().int().positive().nullable(),
});
/** Inferred TS type for {@link updateDietSchema}'s validated output. */
export type UpdateDietInput = z.infer<typeof updateDietSchema>;

/** Payload accepted by `PATCH /profile/allergies`. Replaces the profile's full allergy set — an empty array clears it (also skippable). */
export const updateAllergiesSchema = z.object({
  allergyIds: z.array(z.number().int().positive()),
});
/** Inferred TS type for {@link updateAllergiesSchema}'s validated output. */
export type UpdateAllergiesInput = z.infer<typeof updateAllergiesSchema>;

/**
 * Payload accepted by `PATCH /profile/disliked-ingredients`. Replaces the
 * profile's full "disliked" set — a personal taste preference, not a
 * medical restriction (see `updateAllergiesSchema` above for that distinct
 * list) — an empty array clears it.
 */
export const updateDislikedIngredientsSchema = z.object({
  dislikedIngredientIds: z.array(z.number().int().positive()),
});
/** Inferred TS type for {@link updateDislikedIngredientsSchema}'s validated output. */
export type UpdateDislikedIngredientsInput = z.infer<typeof updateDislikedIngredientsSchema>;
