Spaces:
Running
Running
| from typing import Dict, Any | |
| from sqlalchemy.orm import Session | |
| from fastapi import Depends | |
| from ..db_instance import handle_database_errors, get_db_session | |
| from .models import Task, TasksResult, TaskStatus | |
| def add_task_to_db( | |
| session, | |
| status=TaskStatus.QUEUED, | |
| task_type=None, | |
| language=None, | |
| task_params=None, | |
| file_name=None, | |
| url=None, | |
| audio_duration=None, | |
| ): | |
| """ | |
| Add task to the db | |
| """ | |
| task = Task( | |
| status=status, | |
| language=language, | |
| file_name=file_name, | |
| url=url, | |
| task_type=task_type, | |
| task_params=task_params, | |
| audio_duration=audio_duration, | |
| ) | |
| session.add(task) | |
| session.commit() | |
| return task.uuid | |
| def update_task_status_in_db( | |
| identifier: str, | |
| update_data: Dict[str, Any], | |
| session: Session, | |
| ): | |
| """ | |
| Update task status and attributes in the database. | |
| Args: | |
| identifier (str): Identifier of the task to be updated. | |
| update_data (Dict[str, Any]): Dictionary containing the attributes to update along with their new values. | |
| session (Session, optional): Database session. Defaults to Depends(get_db_session). | |
| Returns: | |
| None | |
| """ | |
| task = session.query(Task).filter_by(uuid=identifier).first() | |
| if task: | |
| for key, value in update_data.items(): | |
| setattr(task, key, value) | |
| session.commit() | |
| def get_task_status_from_db( | |
| identifier: str, session: Session | |
| ): | |
| """Retrieve task status from db""" | |
| task = session.query(Task).filter(Task.uuid == identifier).first() | |
| if task: | |
| return task | |
| else: | |
| return None | |
| def get_all_tasks_status_from_db(session: Session): | |
| """Get all tasks from db""" | |
| columns = [Task.uuid, Task.status, Task.task_type] | |
| query = session.query(*columns) | |
| tasks = [task for task in query] | |
| return TasksResult(tasks=tasks) | |
| def delete_task_from_db(identifier: str, session: Session): | |
| """Delete task from db""" | |
| task = session.query(Task).filter(Task.uuid == identifier).first() | |
| if task: | |
| # If the task exists, delete it from the database | |
| session.delete(task) | |
| session.commit() | |
| return True | |
| else: | |
| # If the task does not exist, return False | |
| return False | |