Implement task API with input validation; implement error handling; refactoring
This commit is contained in:
parent
19d264a03b
commit
50aff05614
24 changed files with 612 additions and 131 deletions
50
tofu_api/api/tasks/task_handler.py
Normal file
50
tofu_api/api/tasks/task_handler.py
Normal file
|
|
@ -0,0 +1,50 @@
|
|||
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)
|
||||
Loading…
Add table
Add a link
Reference in a new issue