| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172 |
- """Task management service."""
- from datetime import datetime
- from typing import Optional, List
- from models import Task
- from database import db
- from auth import auth_service, generate_token
- from validation import validate_task_title
- class TaskService:
- def create_task(
- self, token: str, title: str, description: Optional[str] = None
- ) -> Optional[Task]:
- """Create a new task."""
- user_id = auth_service.get_user_id(token)
- if not user_id:
- return None
- if not validate_task_title(title):
- return None
- task = Task(
- id=generate_token(),
- user_id=user_id,
- title=title,
- description=description,
- completed=False,
- created_at=datetime.now(),
- )
- db.create_task(task)
- return task
- def get_task(self, token: str, task_id: str) -> Optional[Task]:
- """Get a task by ID."""
- user_id = auth_service.get_user_id(token)
- if not user_id:
- return None
- task = db.get_task(task_id)
- if task and task.user_id == user_id:
- return task
- return None
- def get_user_tasks(self, token: str) -> List[Task]:
- """Get all tasks for the authenticated user."""
- user_id = auth_service.get_user_id(token)
- if not user_id:
- return []
- return db.get_user_tasks(user_id)
- def complete_task(self, token: str, task_id: str) -> bool:
- """Mark a task as completed."""
- task = self.get_task(token, task_id)
- if not task:
- return False
- db.update_task(task_id, completed=True, completed_at=datetime.now())
- return True
- def delete_task(self, token: str, task_id: str) -> bool:
- """Delete a task."""
- task = self.get_task(token, task_id)
- if not task:
- return False
- return db.delete_task(task_id)
- task_service = TaskService()
|