task_service.py 1.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940
  1. from sqlalchemy.orm import Session
  2. from app.dao.task_dao import TaskDAO
  3. from app.model.task_model import Task
  4. class TaskService:
  5. def __init__(self, db_session: Session):
  6. self.task_dao = TaskDAO(db_session)
  7. def get_all_tasks(self):
  8. return self.task_dao.get_all()
  9. def get_task_by_id(self, task_id: int):
  10. task = self.task_dao.get_by_id(task_id)
  11. if not task:
  12. raise ValueError(f"Task with id {task_id} not found.")
  13. return task
  14. def create_new_task(self, title: str, description: str = None):
  15. if not title:
  16. raise ValueError("Title cannot be empty.")
  17. new_task = Task(title=title, description=description)
  18. return self.task_dao.create(new_task)
  19. def update_existing_task(self, task_id: int, title: str = None, description: str = None, done: bool = None):
  20. task = self.get_task_by_id(task_id) # 复用 get_task_by_id 方法,包含了查找不到的逻辑
  21. if title is not None:
  22. task.title = title
  23. if description is not None:
  24. task.description = description
  25. if done is not None:
  26. task.done = done
  27. return self.task_dao.update(task)
  28. def delete_task(self, task_id: int):
  29. task = self.get_task_by_id(task_id)
  30. self.task_dao.delete(task)
  31. return True