From 215eddda326ab3d85e3d3a670ca2b840bf11353c Mon Sep 17 00:00:00 2001 From: andrei Date: Sat, 5 Oct 2024 13:12:08 +0500 Subject: [PATCH] ._. --- app/core/entities/city.py | 1 + app/core/usecases/city_service.py | 5 +++-- app/infrastructure/database/repository/city_repository.py | 7 ++++++- 3 files changed, 10 insertions(+), 3 deletions(-) diff --git a/app/core/entities/city.py b/app/core/entities/city.py index 1c05b4b..866da59 100644 --- a/app/core/entities/city.py +++ b/app/core/entities/city.py @@ -6,6 +6,7 @@ class CityEntity(BaseModel): id: Optional[int] = None name: str federal_district_id: Optional[int] = None + federal_district_name: Optional[str] = None class Config: from_attributes = True diff --git a/app/core/usecases/city_service.py b/app/core/usecases/city_service.py index a251160..58b8380 100644 --- a/app/core/usecases/city_service.py +++ b/app/core/usecases/city_service.py @@ -12,12 +12,13 @@ class CitiesService: self.repository = CitiesRepository(db) def get_all_cities(self) -> List[CityEntity]: - cities = self.repository.get_all() + cities = self.repository.get_all_with_federal_district() return [ CityEntity( id=c.id, name=c.name, - federal_district_id=c.federal_district_id + federal_district_id=c.federal_district_id, + federal_district_name=c.federal_district.name ) for c in cities ] diff --git a/app/infrastructure/database/repository/city_repository.py b/app/infrastructure/database/repository/city_repository.py index 8f00773..6587724 100644 --- a/app/infrastructure/database/repository/city_repository.py +++ b/app/infrastructure/database/repository/city_repository.py @@ -1,4 +1,4 @@ -from sqlalchemy.orm import Session +from sqlalchemy.orm import Session, joinedload from app.infrastructure.database.models.cities import City @@ -9,6 +9,11 @@ class CitiesRepository: def get_all(self): return self.db.query(City).all() + def get_all_with_federal_district(self): + return self.db.query(City) \ + .options(joinedload(City.federal_district)) \ + .all() + def get_by_id(self, city_id: int): return self.db.query(City).filter(City.id == city_id).first()