diff options
Diffstat (limited to 'todo/service/tasks.py')
-rw-r--r-- | todo/service/tasks.py | 32 |
1 files changed, 32 insertions, 0 deletions
diff --git a/todo/service/tasks.py b/todo/service/tasks.py new file mode 100644 index 0000000..2cebf00 --- /dev/null +++ b/todo/service/tasks.py @@ -0,0 +1,32 @@ +from typing import List + +from todo.model.task import Task, ValidTaskForm +from todo.model.status import Status +import todo.db.tasks +import todo.db.task_tags +import todo.database + +def get(cursor, status: Status) -> List[Task]: + return todo.db.tasks.get(cursor, status) + +def create(cursor, status: Status, task_form: ValidTaskForm) -> Task: + task = todo.db.tasks.insert(cursor, status, task_form) + todo.db.task_tags.insert_many(cursor, task.id, task_form.tags) + todo.database.commit() + return task + +def update(cursor, task: Task, task_form: ValidTaskForm) -> Task: + todo.db.task_tags.delete(cursor, [task.id]) + updated_task = todo.db.tasks.update(cursor, task, task_form) + todo.db.task_tags.insert_many(cursor, task.id, task_form.tags) + todo.database.commit() + return updated_task + +def delete(cursor, task_ids: List[int]): + todo.db.task_tags.delete(cursor, task_ids) + todo.db.tasks.delete(cursor, task_ids) + todo.database.commit() + +def update_status(cursor, task_ids: List[int], status: Status) -> List[Task]: + todo.db.tasks.update_status(cursor, task_ids, status) + todo.database.commit() |