invoke logic

This commit is contained in:
Robert 2024-02-28 18:09:37 +07:00
parent af68c44193
commit d1bc80c7f1
No known key found for this signature in database
GPG Key ID: F631C7FD957D5F22

View File

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