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, 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.database.commit() return updated_task def delete(cursor, task_ids: List[int]): todo.db.task_tags.delete_from_tasks(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()