weight.py 1.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445
  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_weights_by_space(db: Session, space_id: str) -> List[VAVRoomWeight]:
  9. return db.query(VAVRoomWeight).filter(VAVRoomWeight.space_id == space_id).all()
  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. weight_data = jsonable_encoder(db_weight)
  25. update_data = weight_in.dict(exclude_unset=True)
  26. for field in weight_data:
  27. if field in update_data:
  28. setattr(db_weight, field, update_data[field])
  29. if field == 'temporary_weight':
  30. db_weight.temporary_weight_update_time = get_time_str()
  31. db.add(db_weight)
  32. db.commit()
  33. db.refresh(db_weight)
  34. return db_weight