57 lines
2.3 KiB
Python
57 lines
2.3 KiB
Python
import server
|
|
from aiohttp import web
|
|
from ..services.workflow_service import WorkflowService
|
|
from ..utils.helpers import connect_print
|
|
|
|
|
|
class WorkflowController:
|
|
def __init__(self, service: WorkflowService):
|
|
self.service = service
|
|
self.setup_routes()
|
|
|
|
def setup_routes(self):
|
|
"""Setup workflow-related routes"""
|
|
|
|
@server.PromptServer.instance.routes.put("/connect/workflows")
|
|
async def save_workflow(request):
|
|
data = await request.json()
|
|
workflow = data["workflow"]
|
|
name = data["name"]
|
|
|
|
connect_print(f"PUT /connect/workflows - Saving workflow {name}")
|
|
await self.service.save_workflow(name, workflow)
|
|
return web.json_response(
|
|
{"status": "success", "message": f"Workflow '{name}' saved."}
|
|
)
|
|
|
|
@server.PromptServer.instance.routes.delete("/connect/workflows/{name}")
|
|
async def delete_workflow(request):
|
|
name = request.match_info["name"]
|
|
|
|
connect_print(f"DELETE /connect/workflows/{name} - Deleting the workflow ...")
|
|
await self.service.delete_workflow(name)
|
|
return web.json_response(
|
|
{"status": "success", "message": f"Workflow '{name}' deleted."}
|
|
)
|
|
|
|
@server.PromptServer.instance.routes.post("/connect/workflows/{name}")
|
|
async def execute_workflow(request):
|
|
params = await request.json()
|
|
name = request.match_info["name"]
|
|
|
|
connect_print(f"POST /connect/workflows/{name} - Running workflow ...")
|
|
result = await self.service.execute_workflow(name, params)
|
|
return web.json_response({"status": "success", "workflow": name, "result": result})
|
|
|
|
@server.PromptServer.instance.routes.get("/connect/workflow/cache_nodes")
|
|
async def get_cached_nodes(request):
|
|
cached_nodes = self.service.get_workflows_cached_nodes()
|
|
return web.json_response({"status": "success", "nodes": cached_nodes})
|
|
|
|
@server.PromptServer.instance.routes.get("/connect/workflows/{name}")
|
|
async def get_workflow(request):
|
|
name = request.match_info["name"]
|
|
result = await self.service.get_workflow(name)
|
|
return web.json_response(
|
|
{"status": "success", "workflow": name, "workflow": result}
|
|
) |