from tofu_api.models import Task from tofu_api.repositories import TaskRepository from .validators import TaskCreateData, TaskUpdateData class TaskHandler: """ Handles operations on tasks. """ task_repository: TaskRepository def __init__(self, *, task_repository: TaskRepository): self.task_repository = task_repository def fetch_task(self, task_id: int) -> Task: """ Fetches a single task by its ID from the database. Raises an ObjectNotFoundError if the task was not found. """ return self.task_repository.fetch_by_id(task_id) def fetch_all_tasks(self) -> list[Task]: """ Fetches a list of all tasks. """ return self.task_repository.fetch_all() def create_task(self, create_data: TaskCreateData) -> Task: """ Creates a new task, saves it to the database and returns it. """ task = Task() task.update_from(create_data) self.task_repository.save_resource(task) return task def update_task(self, task: Task, update_data: TaskUpdateData) -> Task: """ Updates a Task object with new data. """ task.update_from(update_data) self.task_repository.save_resource(task) return task def delete_task(self, task: Task) -> None: """ Deletes a task from the database. """ self.task_repository.delete_resource(task)