36 lines
934 B
Python
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)]
|