feat: 创建接口

This commit is contained in:
李如威 2025-09-22 17:28:21 +08:00
parent fcb82396c6
commit ab5f99144c
1 changed files with 35 additions and 5 deletions

View File

@ -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)