aboutsummaryrefslogtreecommitdiff
path: root/todo/service/tasks.py
diff options
context:
space:
mode:
Diffstat (limited to 'todo/service/tasks.py')
-rw-r--r--todo/service/tasks.py32
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()