import { z } from "zod";

const serverSchema = z.object({
  NODE_ENV: z.enum(["development", "production", "test"]).default("development"),
  DATABASE_URL: z.string().url(),
  // Auth (vom Auth-WS konsumiert; AUTH_URL bestimmt Cookie-secure):
  AUTH_SECRET: z.string().min(32),
  AUTH_URL: z.string().url(),
  AUTH_TRUST_HOST: z.coerce.boolean().default(true),
  AUTHENTIK_ISSUER: z.string().url(),
  AUTHENTIK_CLIENT_ID: z.string().min(1),
  AUTHENTIK_CLIENT_SECRET: z.string().min(1),
  // Geo:
  OSRM_URL: z.string().url().default("http://osrm:5000"),
  NOMINATIM_URL: z.string().url().default("http://nominatim:8080"),
  GEO_HTTP_TIMEOUT_MS: z.coerce.number().int().positive().default(4000),
  HAVERSINE_KMH: z.coerce.number().positive().default(50),
});

const parsed = serverSchema.safeParse(process.env);
if (!parsed.success) {
  console.error("Ungültige Umgebungsvariablen:", parsed.error.flatten().fieldErrors);
  throw new Error("Umgebungsvariablen-Validierung fehlgeschlagen");
}

export const env = parsed.data;
export const isHttps = env.AUTH_URL.startsWith("https://");
