import { ReportDefinition } from '../aggregates/report-definition';
import { ReportType } from '../value-objects';

export const REPORT_DEFINITION_REPOSITORY = Symbol('REPORT_DEFINITION_REPOSITORY');

export interface IReportDefinitionRepository {
  save(definition: ReportDefinition): Promise<ReportDefinition>;
  findById(id: bigint): Promise<ReportDefinition | null>;
  findByCode(code: string): Promise<ReportDefinition | null>;
  findByType(type: ReportType): Promise<ReportDefinition[]>;
  findActive(): Promise<ReportDefinition[]>;
  findScheduled(): Promise<ReportDefinition[]>;
  findAll(): Promise<ReportDefinition[]>;
  delete(id: bigint): Promise<void>;
}
