fixes: фикс неверной фильтрации project_reports по годам

This commit is contained in:
tsygankoviva 2026-09-11 11:20:18 +03:00
parent cb837f5cf2
commit 0328e290e0

View File

@ -1,6 +1,6 @@
from sqlalchemy import select from sqlalchemy import select
from sqlalchemy.ext.asyncio import AsyncSession 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_report import RfProjectReport
from src.db.models.rf_project_year import RfProjectYear from src.db.models.rf_project_year import RfProjectYear
@ -52,15 +52,19 @@ class RfProjectReportRepository:
) )
if report_id is not None: if report_id is not None:
query = query.where(RfProjectReport.id == report_id) 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( query = query.options(
joinedload(RfProjectReport.rf_project_year) joinedload(RfProjectReport.rf_project_year)
) )
if year is not None:
query = query.where(RfProjectYear.year == year)
if report_type is not None: if report_type is not None:
query = query.where(RfProjectReport.report_type == report_type) query = query.where(RfProjectReport.report_type == report_type)
if project_id is not None: if project_id is not None:
query = query.where(RfProjectReport.project_id == project_id) query = query.where(RfProjectReport.project_id == project_id)
return (await self.db.execute(query)).scalars().all() return (await self.db.execute(query)).scalars().all()