support for variables

This commit is contained in:
Robert 2024-03-19 01:46:07 +07:00
parent 1dd8e119bf
commit 111e3064c2
No known key found for this signature in database
GPG Key ID: F631C7FD957D5F22
4 changed files with 12 additions and 2 deletions

View File

View File

@ -34,6 +34,7 @@ async def run_chain_controller(
task_id=run_chain_input.task_id, task_id=run_chain_input.task_id,
namespace_id=chain.namespace_id, namespace_id=chain.namespace_id,
recipients=run_chain_input.recipients, recipients=run_chain_input.recipients,
variables=run_chain_input.variables,
) )
progress_chain = await progress_chain_repository.upsert(progress_chain) progress_chain = await progress_chain_repository.upsert(progress_chain)

View File

@ -4,7 +4,7 @@ from .base import BaseConfig, BaseMongoModel
from enum import Enum from enum import Enum
from datetime import datetime from datetime import datetime
from pydantic import BaseModel, Field from pydantic import BaseModel, Field
from typing import Literal, Union, Annotated, Optional, List from typing import Literal, Union, Annotated, Optional, Dict, List
class ProgressActionStatusEnum(str, Enum): class ProgressActionStatusEnum(str, Enum):
@ -51,6 +51,7 @@ Action = Annotated[
class ProgressChain(BaseMongoModel): class ProgressChain(BaseMongoModel):
task_id: int task_id: int
namespace_id: str namespace_id: str
variables: Annotated[Optional[Dict], Field(default={})]
recipients: Annotated[Optional[List[int]], Field(default=[])] recipients: Annotated[Optional[List[int]], Field(default=[])]
name: Annotated[Optional[str], Field(default=None)] name: Annotated[Optional[str], Field(default=None)]
actions: Annotated[Optional[List[Action]], Field(default=[])] actions: Annotated[Optional[List[Action]], Field(default=[])]
@ -62,11 +63,18 @@ class ProgressChain(BaseMongoModel):
chain: Chain, chain: Chain,
task_id: int, task_id: int,
namespace_id: str, namespace_id: str,
variables: Optional[Dict] = {},
recipients: Optional[List[int]] = [], recipients: Optional[List[int]] = [],
): ):
for action in filter(lambda c: c.action_type == "comment", chain.actions):
for key, value in variables.items():
action.text = action.text.replace(f"{{{{{key}}}}}", value)
return ProgressChain( return ProgressChain(
task_id=task_id, task_id=task_id,
namespace_id=namespace_id, namespace_id=namespace_id,
variables=variables,
recipients=recipients, recipients=recipients,
name=chain.name, name=chain.name,
actions=map(Chain.model_dump, chain.actions), actions=map(Chain.model_dump, chain.actions),

View File

@ -1,12 +1,13 @@
from .base import BaseConfig from .base import BaseConfig
from pydantic import BaseModel, Field from pydantic import BaseModel, Field
from typing import Annotated, Optional, List from typing import Annotated, Optional, Dict, List
class RunChainInput(BaseModel): class RunChainInput(BaseModel):
task_id: int task_id: int
chain_id: str chain_id: str
variables: Annotated[Optional[Dict], Field(default={})]
recipients: Annotated[Optional[List[int]], Field(default=[])] recipients: Annotated[Optional[List[int]], Field(default=[])]
class Config(BaseConfig): class Config(BaseConfig):