lovelace_url_service.py 1.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748
  1. from sqlalchemy.orm import Session
  2. from app.dao.lovelace_url_dao import LovelaceURLDAO
  3. from app.model.lovelace_url_model import LovelaceURL
  4. class LovelaceURLService:
  5. def __init__(self, db_session: Session):
  6. self.dao = LovelaceURLDAO(db_session)
  7. def list_all(self):
  8. return self.dao.get_all()
  9. def get_by_id(self, record_id: int):
  10. record = self.dao.get_by_id(record_id)
  11. if not record:
  12. raise ValueError(f"LovelaceURL with id {record_id} not found.")
  13. return record
  14. def create(self, room_name: str, url: str):
  15. if not room_name or not room_name.strip():
  16. raise ValueError("room_name cannot be empty.")
  17. if not url or not url.strip():
  18. raise ValueError("url cannot be empty.")
  19. record = LovelaceURL(room_name=room_name.strip(), url=url.strip())
  20. return self.dao.create(record)
  21. def update(self, record_id: int, room_name: str = None, url: str = None):
  22. record = self.get_by_id(record_id)
  23. if room_name is not None:
  24. if not room_name.strip():
  25. raise ValueError("room_name cannot be empty when provided.")
  26. record.room_name = room_name.strip()
  27. if url is not None:
  28. if not url.strip():
  29. raise ValueError("url cannot be empty when provided.")
  30. record.url = url.strip()
  31. return self.dao.update(record)
  32. def delete(self, record_id: int):
  33. record = self.get_by_id(record_id)
  34. self.dao.delete(record)
  35. return True