diff --git a/api/src/repository/rf_project_report_repository.py b/api/src/repository/rf_project_report_repository.py index ae10554..a0310dd 100644 --- a/api/src/repository/rf_project_report_repository.py +++ b/api/src/repository/rf_project_report_repository.py @@ -1,6 +1,6 @@ from sqlalchemy import select from sqlalchemy.ext.asyncio import AsyncSession -from sqlalchemy.orm import joinedload +from sqlalchemy.orm import contains_eager, joinedload from src.db.models.rf_project_report import RfProjectReport from src.db.models.rf_project_year import RfProjectYear @@ -52,15 +52,19 @@ class RfProjectReportRepository: ) if report_id is not None: query = query.where(RfProjectReport.id == report_id) - if load_year or year: + if year is not None: + query = query.join(RfProjectReport.rf_project_year).options( + contains_eager(RfProjectReport.rf_project_year) + ).where( + RfProjectYear.year == year + ) + elif load_year: + # Если только загрузка без фильтрации query = query.options( joinedload(RfProjectReport.rf_project_year) ) - if year is not None: - query = query.where(RfProjectYear.year == year) if report_type is not None: query = query.where(RfProjectReport.report_type == report_type) if project_id is not None: query = query.where(RfProjectReport.project_id == project_id) - return (await self.db.execute(query)).scalars().all()