fuware-be/backend/repos/repository_houses.py

37 lines
1.2 KiB
Python

from backend.db.models.houses import Houses, Areas
from sqlalchemy.orm import Session
from backend.schemas.house import HouseCreate
class RepositoryHouses:
def __init__(self):
self.houses = Houses()
self.areas = Areas()
def get_all(self, skip: int = 0, limit: int = 100):
return self.houses.query.filter_by(deleted_at=None).offset(skip).limit(limit).all()
def get_all_areas(self, house_id: str, skip: int = 0, limit: int = 100):
return self.areas.query.filter_by(deleted_at=None, house_id=house_id).offset(skip).limit(limit).all()
def get_count_all(self, skip: int = 0, limit: int = 100):
return self.houses.query.filter_by(deleted_at=None).offset(skip).limit(limit).count()
def get_by_id(self, house_id: str):
return self.houses.query.filter_by(id=house_id).one()
def create(self, db: Session, house: HouseCreate):
try:
areas = getattr(house, "areas")
db_house = Houses(**house.dict(exclude={"areas"}))
for area in areas:
db_house.areas.append(Areas(**area.dict()))
db.add(db_house)
db.commit()
except Exception:
db.rollback()
raise
db.refresh(db_house)
return db_house