import { SetMetadata } from '@nestjs/common';
import { DataScopeFieldMapping } from '../services/data-scope.service';

export const DATA_SCOPE_KEY = 'dataScope';

export interface DataScopeMetadata {
  resource: string;
  fields?: DataScopeFieldMapping;
}

export const DataScope = (
  resourceOrConfig: string | DataScopeMetadata,
) => {
  const metadata: DataScopeMetadata =
    typeof resourceOrConfig === 'string'
      ? { resource: resourceOrConfig }
      : resourceOrConfig;
  return SetMetadata(DATA_SCOPE_KEY, metadata);
};
