Spaces:
No application file
No application file
| from sqlmodel import select | |
| from sqlmodel.ext.asyncio.session import AsyncSession | |
| from typing import List, Optional | |
| from models.task import Task, TaskBase | |
| from schemas.task import TaskCreate, TaskUpdate | |
| import uuid | |
| async def create_task(*, session: AsyncSession, task_in: TaskCreate, user_id: uuid.UUID) -> Task: | |
| """ | |
| Create a new task for the given user | |
| """ | |
| task = Task.from_orm(task_in) | |
| task.user_id = user_id | |
| session.add(task) | |
| await session.commit() | |
| await session.refresh(task) | |
| return task | |
| async def get_tasks_by_user(*, session: AsyncSession, user_id: uuid.UUID) -> List[Task]: | |
| """ | |
| Get all tasks for a specific user | |
| """ | |
| statement = select(Task).where(Task.user_id == user_id) | |
| result = await session.exec(statement) | |
| tasks = result.all() | |
| return tasks | |
| async def get_task_by_id(*, session: AsyncSession, task_id: uuid.UUID, user_id: uuid.UUID) -> Optional[Task]: | |
| """ | |
| Get a specific task by ID for a specific user | |
| """ | |
| statement = select(Task).where(Task.id == task_id, Task.user_id == user_id) | |
| result = await session.exec(statement) | |
| task = result.first() | |
| return task | |
| async def update_task(*, session: AsyncSession, task: Task, task_in: TaskUpdate) -> Task: | |
| """ | |
| Update a task with the provided data | |
| """ | |
| task_data = task_in.dict(exclude_unset=True) | |
| for field, value in task_data.items(): | |
| setattr(task, field, value) | |
| session.add(task) | |
| await session.commit() | |
| await session.refresh(task) | |
| return task | |
| async def delete_task(*, session: AsyncSession, task: Task) -> bool: | |
| """ | |
| Delete a task | |
| """ | |
| await session.delete(task) | |
| await session.commit() | |
| return True | |
| async def update_task_completion_status(*, session: AsyncSession, task: Task, completed: bool) -> Task: | |
| """ | |
| Update the completion status of a task | |
| """ | |
| task.completed = completed | |
| session.add(task) | |
| await session.commit() | |
| await session.refresh(task) | |
| return task |