import "dotenv/config";
import { z } from "zod";

const schema = z.object({
  DATABASE_URL: z.string().min(1, "DATABASE_URL requerida"),
  JWT_SECRET: z.string().min(32, "JWT_SECRET debe tener al menos 32 caracteres"),
  NODE_ENV: z.enum(["development", "production", "test"]).default("development"),
  PORT: z.coerce.number().int().positive().default(4000),
  COOKIE_DOMAIN: z.string().default("localhost"),
  CORS_ORIGIN: z.string().url(),
  ENABLE_DRONES_MODULE: z
    .preprocess((v) => v === "true" || v === "1", z.boolean())
    .default(false),
  ENABLE_ROBOFUT_MODULE: z
    .preprocess((v) => v === "true" || v === "1", z.boolean())
    .default(false),
  DRONES_TIEMPO_MAX_DIA1: z.coerce.number().int().positive().default(300),
  DRONES_TIEMPO_MAX_DIA2: z.coerce.number().int().positive().default(420),
  ENABLE_TODOTERRENO_MODULE: z
    .preprocess((v) => v === "true" || v === "1", z.boolean())
    .default(false),
  TODOTERRENO_TIEMPO_MAX: z.coerce.number().int().positive().default(300),
  ENABLE_STEMSR_MODULE: z
    .preprocess((v) => v === "true" || v === "1", z.boolean())
    .default(false),
});

const parsed = schema.safeParse(process.env);

if (!parsed.success) {
  console.error("Variables de entorno inválidas:");
  console.error(parsed.error.flatten().fieldErrors);
  process.exit(1);
}

export const env = parsed.data;
