From d1bc80c7f1f68e36eec12bda8bc7b1b27b5e804c Mon Sep 17 00:00:00 2001 From: Robert Date: Wed, 28 Feb 2024 18:09:37 +0700 Subject: [PATCH] invoke logic --- chain_service/controllers/run_chain.py | 29 +++++++++++++++++++++++--- 1 file changed, 26 insertions(+), 3 deletions(-) diff --git a/chain_service/controllers/run_chain.py b/chain_service/controllers/run_chain.py index a9eac8e..4c9684d 100644 --- a/chain_service/controllers/run_chain.py +++ b/chain_service/controllers/run_chain.py @@ -1,6 +1,18 @@ from chain_service.schema.run_chain import RunChainInput + from chain_service.dependencies.chain_repository import ChainRepositoryDependency +from chain_service.dependencies.progress_chain_repository import ( + ProgressChainRepositoryDependency, +) + +from chain_service.dependencies.progress_chain_runner_service import ( + ProgressChainRunnerServiceDependency, +) + +from chain_service.database.models.progress_chain import ProgressChain + +import asyncio from loguru import logger from fastapi import APIRouter, HTTPException @@ -9,12 +21,23 @@ router = APIRouter() @router.post("/run_chain") async def run_chain_controller( - run_chain_input: RunChainInput, chain_repository: ChainRepositoryDependency + run_chain_input: RunChainInput, + chain_repository: ChainRepositoryDependency, + progress_chain_repository: ProgressChainRepositoryDependency, + progress_chain_runner_service: ProgressChainRunnerServiceDependency, ): try: assert (chain := await chain_repository.get_by_id(run_chain_input.chain_id)) - logger.info(f"Got chain to run {chain}") - return {"works": True} + + progress_chain = ProgressChain.create_from_chain( + chain=chain, + task_id=run_chain_input.task_id, + recipients=run_chain_input.recipients, + ) + + progress_chain = await progress_chain_repository.upsert(progress_chain) + asyncio.create_task(progress_chain_runner_service.process(progress_chain)) + return {} except AssertionError: logger.warning(f"Chain not found {run_chain_input.chain_id}")