chain-service/chain_service/database/models/chain.py
2024-03-03 17:58:20 +07:00

36 lines
934 B
Python

from .base import BaseConfig, BaseMongoModel
from datetime import datetime
from pydantic import BaseModel, Field
from typing import Literal, Union, Annotated, Optional, List
class BaseAction(BaseModel):
action_type: Literal["wait", "comment"]
class WaitAction(BaseAction):
action_type: Literal["wait"]
wait_for: int
class Config(BaseConfig):
pass
class CommentAction(BaseAction):
action_type: Literal["comment"]
text: Annotated[Optional[str], Field(default=None)]
file_urls: Annotated[Optional[List[str]], Field(default=[])]
class Config(BaseConfig):
pass
Action = Annotated[Union[WaitAction, CommentAction], Field(description="action_type")]
class Chain(BaseMongoModel):
name: Annotated[Optional[str], Field(default=None)]
actions: Annotated[Optional[List[Action]], Field(default=[])]
last_modified: Annotated[datetime, Field(default_factory=datetime.utcnow)]