weight.py 1.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344
  1. # -*- coding: utf-8 -*-
  2. from typing import List
  3. from fastapi.encoders import jsonable_encoder
  4. from sqlalchemy.orm import Session
  5. from app.models.space.weight import VAVRoomWeight
  6. from app.schemas.sapce_weight import SpaceWeightCreate, SpaceWeightUpdate
  7. from app.utils.date import get_time_str
  8. def get_weight_by_space(db: Session, space_id: str) -> VAVRoomWeight:
  9. return db.query(VAVRoomWeight).filter(VAVRoomWeight.space_id == space_id).first()
  10. def get_weights_by_vav(db: Session, vav_id: str) -> List[VAVRoomWeight]:
  11. return db.query(VAVRoomWeight).filter(VAVRoomWeight.vav_box_id == vav_id).all()
  12. def create_weight(db: Session, weight: SpaceWeightCreate) -> VAVRoomWeight:
  13. db_weight = VAVRoomWeight(
  14. default_weight=weight.default_weight,
  15. project_id=weight.project_id,
  16. space_id=weight.space_id,
  17. vav_box_id=weight.vav_box_id
  18. )
  19. db.add(db_weight)
  20. db.commit()
  21. db.refresh(db_weight)
  22. return db_weight
  23. def update_weight(db: Session, db_weight: VAVRoomWeight, weight_in: SpaceWeightUpdate) -> VAVRoomWeight:
  24. db_weight.temporary_weight_update_time = get_time_str()
  25. weight_data = jsonable_encoder(db_weight)
  26. update_data = weight_in.dict(exclude_unset=True)
  27. for field in weight_data:
  28. if field in update_data:
  29. setattr(db_weight, field, update_data[field])
  30. db.add(db_weight)
  31. db.commit()
  32. db.refresh(db_weight)
  33. return db_weight