import { SetMetadata } from "@nestjs/common";
import { TallerParametroClave } from "./taller-parametros.catalogo";

export const REQUIERE_FLAG_METADATA = "taller:requiere-flag";

export interface RequiereFlagOpciones {
  // Rutas publicas (token en la URL, sin sesion): apagado responde 404 en vez
  // de 403, para no revelar que la funcion existe en ese taller.
  comoNoEncontrado?: boolean;
  // Catalogos que el sync offline sigue bajando: se bloquea alta/edicion pero
  // no la lectura, si no la cola offline del frontend fallaria al sincronizar.
  soloEscritura?: boolean;
}

// Metadata que lee RequiereFlagGuard. Va en la clase o en el handler; el
// handler gana cuando un mismo controller mezcla funciones distintas
// (catalogos: tipos de daño, cosas que trae, cargas masivas).
export const RequiereFlag = (
  clave: TallerParametroClave,
  opciones: RequiereFlagOpciones = {},
) => SetMetadata(REQUIERE_FLAG_METADATA, { clave, ...opciones });
