from collections.abc import Sequence from anydi import singleton from dmp.ad_reporting.exceptions import AdReportingReportNotFoundError from dmp.ad_reporting.models import AdReportingReport from dmp.ad_reporting.repositories import AdReportingReportRepository @singleton class AdReportingReportService: def __init__( self, report_repository: AdReportingReportRepository, ) -> None: self.report_repository = report_repository def get_report(self, *, report_id: str, identity_id: str) -> AdReportingReport: report = self.report_repository.get_by_id_and_identity_id( report_id=report_id, identity_id=identity_id ) if report is None: raise AdReportingReportNotFoundError return report def get_reports( self, *, identity_id: str, report_ids: set[str] ) -> Sequence[AdReportingReport]: return self.report_repository.find_by_ids_and_identity_id( report_ids=report_ids, identity_id=identity_id ) def save_report(self, report: AdReportingReport) -> None: self.report_repository.add(report) def delete_report(self, report: AdReportingReport) -> None: self.report_repository.delete(report)