Last Commit for solidjs
This commit is contained in:
@ -1,7 +1,7 @@
|
||||
from backend.db.models.houses import Houses, Areas
|
||||
from sqlalchemy.orm import Session
|
||||
|
||||
from backend.schemas.house import HouseCreate
|
||||
from backend.schemas.house import HouseCreate, HouseUpdate, AreaUpdate
|
||||
|
||||
class RepositoryHouses:
|
||||
def __init__(self):
|
||||
@ -34,3 +34,45 @@ class RepositoryHouses:
|
||||
|
||||
db.refresh(db_house)
|
||||
return db_house
|
||||
|
||||
def update_area(self, db: Session, areas: list[AreaUpdate], house_id: str):
|
||||
db_house = self.get_by_id(house_id)
|
||||
if not db_house:
|
||||
return None
|
||||
try:
|
||||
db_areaId = [area.id for area in db_house.areas]
|
||||
area_update_id = [area.id for area in areas if area.id is not None]
|
||||
area_delete_id = [area_id for area_id in db_areaId if area_id not in area_update_id]
|
||||
if area_delete_id:
|
||||
self.areas.query.where(Areas.id.in_(area_delete_id)).delete()
|
||||
|
||||
for area in areas:
|
||||
area_obj = Areas(**area.dict(), house_id=house_id)
|
||||
db.merge(area_obj)
|
||||
|
||||
# areaList = [dict(**area.dict(), house_id=house_id) for area in areas]
|
||||
# db.execute(update(Areas), areaList)
|
||||
# self.areas.query.update(areaList)
|
||||
db.commit()
|
||||
except Exception:
|
||||
db.rollback()
|
||||
raise
|
||||
|
||||
|
||||
def update(self, db: Session, house: HouseUpdate):
|
||||
db_house = self.get_by_id(house.id)
|
||||
if not db_house:
|
||||
return None
|
||||
try:
|
||||
self.houses.query.where(Houses.id == house.id).update(house.dict(exclude={"id", 'areas'}, exclude_unset=True, exclude_none=True))
|
||||
db.commit()
|
||||
self.update_area(db, house.areas, house.id)
|
||||
except Exception:
|
||||
db.rollback()
|
||||
raise
|
||||
|
||||
db.refresh(db_house)
|
||||
return db_house
|
||||
|
||||
def delete(self, db: Session, house_id: str):
|
||||
pass
|
||||
|
Reference in New Issue
Block a user