1
0

tasks.py 1.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172
  1. """Task management service."""
  2. from datetime import datetime
  3. from typing import Optional, List
  4. from models import Task
  5. from database import db
  6. from auth import auth_service, generate_token
  7. from validation import validate_task_title
  8. class TaskService:
  9. def create_task(
  10. self, token: str, title: str, description: Optional[str] = None
  11. ) -> Optional[Task]:
  12. """Create a new task."""
  13. user_id = auth_service.get_user_id(token)
  14. if not user_id:
  15. return None
  16. if not validate_task_title(title):
  17. return None
  18. task = Task(
  19. id=generate_token(),
  20. user_id=user_id,
  21. title=title,
  22. description=description,
  23. completed=False,
  24. created_at=datetime.now(),
  25. )
  26. db.create_task(task)
  27. return task
  28. def get_task(self, token: str, task_id: str) -> Optional[Task]:
  29. """Get a task by ID."""
  30. user_id = auth_service.get_user_id(token)
  31. if not user_id:
  32. return None
  33. task = db.get_task(task_id)
  34. if task and task.user_id == user_id:
  35. return task
  36. return None
  37. def get_user_tasks(self, token: str) -> List[Task]:
  38. """Get all tasks for the authenticated user."""
  39. user_id = auth_service.get_user_id(token)
  40. if not user_id:
  41. return []
  42. return db.get_user_tasks(user_id)
  43. def complete_task(self, token: str, task_id: str) -> bool:
  44. """Mark a task as completed."""
  45. task = self.get_task(token, task_id)
  46. if not task:
  47. return False
  48. db.update_task(task_id, completed=True, completed_at=datetime.now())
  49. return True
  50. def delete_task(self, token: str, task_id: str) -> bool:
  51. """Delete a task."""
  52. task = self.get_task(token, task_id)
  53. if not task:
  54. return False
  55. return db.delete_task(task_id)
  56. task_service = TaskService()