import { z } from "zod";

/**
 * Gemeinsame Zod-Schemas, die an mehreren Grenzen (FormData, JSON, searchParams)
 * wiederverwendet werden. Feature-Workstreams bauen darauf auf.
 */

export const uuidSchema = z.string().uuid({ message: "Ungültige ID." });

export const nonEmptyText = z
  .string()
  .trim()
  .min(1, { message: "Pflichtfeld." });

export const optionalText = z
  .string()
  .trim()
  .optional()
  .transform((v) => (v === "" ? undefined : v));

export const latitudeSchema = z
  .number({ invalid_type_error: "Ungültiger Breitengrad." })
  .min(-90)
  .max(90);

export const longitudeSchema = z
  .number({ invalid_type_error: "Ungültiger Längengrad." })
  .min(-180)
  .max(180);

export const paginationSchema = z.object({
  page: z.coerce.number().int().positive().default(1),
  pageSize: z.coerce.number().int().positive().max(100).default(25),
});

export type Pagination = z.infer<typeof paginationSchema>;
