This commit is contained in:
Андрей Дувакин 2024-10-05 13:12:08 +05:00
parent ce4b56ca32
commit 215eddda32
3 changed files with 10 additions and 3 deletions

View File

@ -6,6 +6,7 @@ class CityEntity(BaseModel):
id: Optional[int] = None id: Optional[int] = None
name: str name: str
federal_district_id: Optional[int] = None federal_district_id: Optional[int] = None
federal_district_name: Optional[str] = None
class Config: class Config:
from_attributes = True from_attributes = True

View File

@ -12,12 +12,13 @@ class CitiesService:
self.repository = CitiesRepository(db) self.repository = CitiesRepository(db)
def get_all_cities(self) -> List[CityEntity]: def get_all_cities(self) -> List[CityEntity]:
cities = self.repository.get_all() cities = self.repository.get_all_with_federal_district()
return [ return [
CityEntity( CityEntity(
id=c.id, id=c.id,
name=c.name, 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 for c in cities
] ]

View File

@ -1,4 +1,4 @@
from sqlalchemy.orm import Session from sqlalchemy.orm import Session, joinedload
from app.infrastructure.database.models.cities import City from app.infrastructure.database.models.cities import City
@ -9,6 +9,11 @@ class CitiesRepository:
def get_all(self): def get_all(self):
return self.db.query(City).all() 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): def get_by_id(self, city_id: int):
return self.db.query(City).filter(City.id == city_id).first() return self.db.query(City).filter(City.id == city_id).first()