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.py12
1 files changed, 8 insertions, 4 deletions
diff --git a/todo/service/tasks.py b/todo/service/tasks.py
index 2cebf00..c01ab8a 100644
--- a/todo/service/tasks.py
+++ b/todo/service/tasks.py
@@ -15,15 +15,19 @@ def create(cursor, status: Status, task_form: ValidTaskForm) -> Task:
todo.database.commit()
return task
-def update(cursor, task: Task, task_form: ValidTaskForm) -> Task:
- todo.db.task_tags.delete(cursor, [task.id])
+def update(cursor, task: Task, tags: List[int], task_form: ValidTaskForm) -> Task:
+ old_tags = [t for t in tags if t not in task_form.tags]
+ todo.db.task_tags.delete_from_tags(cursor, task.id, old_tags)
+
+ new_tags = [t for t in task_form.tags if t not in tags]
+ todo.db.task_tags.insert_many(cursor, task.id, new_tags)
+
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.task_tags.delete_from_tasks(cursor, task_ids)
todo.db.tasks.delete(cursor, task_ids)
todo.database.commit()