WIP: feat: delete ports #4
@@ -3,66 +3,71 @@ from typing import Optional, Annotated, Literal, Any
|
||||
from pydantic import BaseModel, Field
|
||||
|
||||
|
||||
from pydantic import BaseModel, Field
|
||||
from typing import Literal, Annotated, Union
|
||||
|
||||
|
||||
class LinkPort(BaseModel):
|
||||
id: int
|
||||
label: str
|
||||
is_addable: Optional[bool] = None
|
||||
is_addable: bool | None = None
|
||||
|
||||
|
||||
class LineElement(BaseModel):
|
||||
type: Literal['line']
|
||||
type: Literal['line'] = 'line'
|
||||
name: str
|
||||
label: str
|
||||
placeholder: Optional[str] = None
|
||||
value: str = None
|
||||
placeholder: str | None = None
|
||||
value: str | None = None
|
||||
|
||||
|
||||
class AreaElement(BaseModel):
|
||||
type: Literal['area']
|
||||
type: Literal['area'] = 'area'
|
||||
name: str
|
||||
label: str
|
||||
placeholder: Optional[str] = None
|
||||
value: str = None
|
||||
placeholder: str | None = None
|
||||
value: str | None = None
|
||||
|
||||
|
||||
class SelectElement(BaseModel):
|
||||
type: Literal['select']
|
||||
type: Literal['select'] = 'select'
|
||||
name: str
|
||||
label: str
|
||||
data: list[str]
|
||||
default: Optional[str] = None
|
||||
placeholder: Optional[str] = None
|
||||
value: Optional[Any] = None
|
||||
default: str | None = None
|
||||
placeholder: str | None = None
|
||||
value: str | None = None
|
||||
|
||||
|
||||
class NumberElement(BaseModel):
|
||||
type: Literal['number']
|
||||
type: Literal['number'] = 'number'
|
||||
name: str
|
||||
label: str
|
||||
placeholder: Optional[str] = None
|
||||
value: int | float
|
||||
placeholder: str | None = None
|
||||
value: int | float | None = None
|
||||
|
||||
|
||||
class DateElement(BaseModel):
|
||||
type: Literal['date']
|
||||
type: Literal['date'] = 'date'
|
||||
name: str
|
||||
label: str
|
||||
placeholder: Optional[str] = None
|
||||
value: str = None
|
||||
placeholder: str | None = None
|
||||
value: str | None = None
|
||||
|
||||
|
||||
|
||||
FieldElement = Annotated[
|
||||
LineElement | AreaElement | SelectElement | NumberElement | DateElement,
|
||||
Field(discriminator='type'),
|
||||
Field(discriminator='type')
|
||||
]
|
||||
|
||||
|
||||
class RowElement(BaseModel):
|
||||
type: Literal['row']
|
||||
type: Literal['row'] = 'row'
|
||||
name: str
|
||||
label: str
|
||||
link_port: Optional[LinkPort] = None
|
||||
elements: Optional[list[FieldElement]] = None
|
||||
link_port: LinkPort | None = None
|
||||
elements: list[FieldElement] | None = None
|
||||
|
||||
|
||||
class FormDescriptor(BaseModel):
|
||||
|
||||
Reference in New Issue
Block a user