import { SetMetadata } from '@nestjs/common';
import { PermissionRequirement } from '../guards/permission.guard';

export const PERMISSION_KEY = 'permissions';

/**
 * @Permissions() — decorator to set required module + access level on a route.
 *
 * Per CLAUDE.md:
 * - Never hardcode role checks — always use dynamic permission guard
 * - Access levels per module: None / View / Create / Edit / Delete
 *
 * Usage:
 *   @Permissions({ module: ModuleName.HOTEL, accessLevel: AccessLevel.CREATE })
 *   @Post()
 *   create() { ... }
 */
export const Permissions = (requirement: PermissionRequirement) =>
  SetMetadata(PERMISSION_KEY, requirement);
