Files
my-v0-server/app/schemas/actions/add.py
T

27 lines
1.4 KiB
Python

"""新增组件动作"""
from typing import Literal
from pydantic import Field
from app.schemas.actions.base import ActionModel
from app.schemas.screen import ScreenNode
class AddAction(ActionModel):
"""按物料新增组件"""
type: Literal["add"] = "add"
node: ScreenNode = Field(
description="新组件。id、type、layout 必填,其余只写需要覆盖物料默认配置的字段;"
"后端按 type 找到物料,用默认配置补全:对象逐层覆盖,数组整体替换,null 明确覆盖。"
"写出的字段和 update 一样按字段定义检查类型和取值(跟随主题的颜色可以写 null)。"
"id 不能与当前大屏上的组件重复(包括之前提交里新增的),先 delete 的 ID 可以再用;type 用 list_components 返回的 type。"
'任何字段值都可以写成 {"$query": "SELECT ..."},后端替换成上传数据的查询结果:写入单个值的字段时结果要一行一列,取那个值;写入数字、文字数组的字段时结果要只有一列;其余是对象数组,键是结果的列名'
)
sample_data: bool = Field(
default=False,
description="true 表示组件展示的是自己编写的数据(不是来自上传的文件或大屏上已有的组件),交付时标为示例数据。"
"组件上留着物料示例数据时后端会自动标为示例数据,不用写",
)