first commit
This commit is contained in:
@@ -0,0 +1,43 @@
|
||||
from .finance_parse import parse_finance_data
|
||||
from tortoise.expressions import Q
|
||||
from tortoise.transactions import atomic
|
||||
|
||||
from app.models.automation import Task, TaskStatus
|
||||
from app.schemas.task import TaskModel, DecodeTaskParams, DecodeTaskResult
|
||||
|
||||
class TaskController(object):
|
||||
async def get_task(self, name, type):
|
||||
q = Q()
|
||||
# 获取所有未被软删除的任务
|
||||
q &= Q(is_deleted=False)
|
||||
if name: q &= Q(name__contains=name)
|
||||
if type: q &= Q(type=type)
|
||||
all_tasks = await self.model.filter(q).order_by("id")
|
||||
return all_tasks
|
||||
|
||||
async def list(self, name, type, page: int = 1, page_size: int = 10, order: list[str] = ["id"]):
|
||||
q = Q()
|
||||
if name: q &= Q(name__contains=name)
|
||||
if type: q &= Q(type=type)
|
||||
query = Task.filter(q)
|
||||
return await query.count(), await query.offset((page - 1) * page_size).limit(page_size).order_by(*order)
|
||||
|
||||
@atomic()
|
||||
async def create_task(self, name: str, obj_in: DecodeTaskParams):
|
||||
task_obj = TaskModel.create_decode_task(name, obj_in)
|
||||
task_obj.result = task_obj.result or {}
|
||||
obj = Task(**task_obj.model_dump())
|
||||
await obj.save()
|
||||
return obj, task_obj
|
||||
|
||||
@atomic()
|
||||
async def update_task(self, obj_in: TaskModel, task_id: int, status: TaskStatus, result: DecodeTaskResult):
|
||||
task_obj = await Task.get(id=task_id)
|
||||
obj_in.status = status
|
||||
obj_in.set_result(result)
|
||||
|
||||
# 更新任务信息
|
||||
task_obj.update_from_dict(obj_in.model_dump(exclude_unset=True))
|
||||
await task_obj.save()
|
||||
|
||||
task_controller = TaskController()
|
||||
Reference in New Issue
Block a user