diff --git a/backend/app/main.py b/backend/app/main.py index 6ac5936..4f034a5 100644 --- a/backend/app/main.py +++ b/backend/app/main.py @@ -2,15 +2,14 @@ import asyncio import datetime import json import os -from pydoc import cli import uvicorn import uuid import time -from tool import format_content_uuid +import traceback import models.db as DB import nodes as F +from tool import format_content_uuid from tortoise.transactions import in_transaction -from tortoise.expressions import Subquery from tortoise.functions import Max from fastapi import FastAPI, Depends, HTTPException from models.schemas.system import InitStatusResponse, InitConfigRequest, BaseResponse, TableResponse @@ -24,7 +23,7 @@ from contextlib import asynccontextmanager from fastapi.security import OAuth2PasswordBearer from fastapi.responses import StreamingResponse from apscheduler.schedulers.asyncio import AsyncIOScheduler -import traceback + # 简单的登陆状态存储 sessions: dict[str, tuple[float, DB.User]] = {} @@ -310,11 +309,38 @@ def create_app(): res.append(obj) return TableResponse(data=res, total=len(res)) + @app.post("/api/flows", tags=["Flow"], description="任务创建", response_model=BaseResponse) + async def create_flow(body: WorkRequest, user: DB.User = Depends(get_current_user)): + work = DB.Work() + work.uuid = uuid.uuid4().hex + work.creator_id = user.id + work.work_title = body.work_title + work.work_desc = body.work_desc + + work_content = DB.WorkContent( + user_id=work.creator_id, + content=[], + is_deleted=0, + work_id=0, + ) + work_content.content = format_content_uuid(body.content) + work_content.update_time = datetime.datetime.now() + + async with in_transaction(): + await work.save() + work_content.work_id = work.id + await work_content.save() + return BaseResponse() + @app.put("/api/flows", tags=["Flow"], description="任务修改", response_model=BaseResponse) async def update_flow(work_uuid: str, body: WorkRequest, user: DB.User = Depends(get_current_user)): work = await DB.Work.filter(uuid=work_uuid).first() if not work: return BaseResponse(success=False, message="Not Found") + work.work_title = body.work_title + work.work_desc = body.work_desc + work.update_time = datetime.datetime.now() + work_content = await DB.WorkContent.filter(work_id=work.id).first() if not work_content: work_content = DB.WorkContent( @@ -325,7 +351,10 @@ def create_app(): ) work_content.content = format_content_uuid(body.content) work_content.update_time = datetime.datetime.now() - await work_content.save() + + async with in_transaction(): + await work.save() + await work_content.save() return BaseResponse() @app.get("/api/flows/detail", tags=["Flow"], description="任务详情", response_model=BaseResponse) @@ -391,5 +420,6 @@ def create_app(): app = create_app() + if __name__ == "__main__": uvicorn.run("main:app", host="0.0.0.0", port=8080, reload=True)