diff --git a/chain_service/database/models/chain.py b/chain_service/database/models/chain.py new file mode 100644 index 0000000..b0daf97 --- /dev/null +++ b/chain_service/database/models/chain.py @@ -0,0 +1,29 @@ +from .base import BaseMongoModel + +from datetime import datetime +from pydantic import BaseModel, Field +from typing import Literal, Union, Annotated, Optional, List + + +class WaitAction(BaseModel): + action_type: Literal["wait"] + wait_for: int + + +class TextCommentAction(BaseModel): + action_type: Literal["text_comment"] + text: str + + +Action = Annotated[ + Union[WaitAction, TextCommentAction], Field(description="action_type") +] + + +class Chain(BaseMongoModel): + name: Annotated[Optional[str], Field(default=None)] + actions: Annotated[Optional[List[Action]], Field(default=[])] + created_at: Annotated[datetime, Field(default_factory=datetime.utcnow)] + + class Config(BaseMongoModel.Config): + pass