import { SetMetadata } from '@nestjs/common';

export const REQUIRE_PERMISSION_KEY = 'require_permission';

export interface RequirePermissionMeta {
  modulo: string;
  privilegio: string;
}

/**
 * Decorator que marca un endpoint como requeridor de un privilegio específico sobre un módulo.
 * Verifica que:
 *  1. La empresa tenga el módulo activo en su suscripción
 *  2. El perfil del usuario tenga el privilegio para ese módulo
 *
 * @example
 * @RequirePermission('PRODUCTOS', 'CREAR')
 * @Post()
 * create() { ... }
 *
 * @RequirePermission('PRODUCTOS', 'ELIMINAR')
 * @Delete(':id')
 * remove() { ... }
 */
export const RequirePermission = (modulo: string, privilegio: string) =>
  SetMetadata(REQUIRE_PERMISSION_KEY, { modulo, privilegio } as RequirePermissionMeta);
