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()