yao-app-ts-types
Version:
typescript types for yao application
727 lines • 21.6 kB
JSON
{
"$schema": "http://json-schema.org/draft-07/schema#",
"$ref": "#/definitions/YaoModel.ModelDSL",
"definitions": {
"YaoModel.ModelDSL": {
"type": "object",
"properties": {
"version": {
"type": "string",
"description": "版本【管理字段】"
},
"description": {
"type": "string",
"description": "描述【管理字段】"
},
"comment": {
"type": "string",
"description": "备注【管理字段】"
},
"label": {
"type": "string",
"description": "标签"
},
"name": {
"type": "string",
"description": "模型名称"
},
"connector": {
"type": "string",
"description": "数据表定义"
},
"table": {
"$ref": "#/definitions/YaoModel.Table",
"description": "数据表选项"
},
"columns": {
"type": "array",
"items": {
"$ref": "#/definitions/YaoModel.ModelColumn"
},
"description": "字段定义"
},
"indexes": {
"type": "array",
"items": {
"$ref": "#/definitions/YaoModel.Index"
},
"description": "索引定义"
},
"relations": {
"type": "object",
"additionalProperties": {
"anyOf": [
{
"$ref": "#/definitions/YaoModel.Relation"
},
{
"not": {}
}
]
},
"description": "映射关系定义"
},
"values": {
"type": "array",
"items": {},
"description": "默认数据"
},
"option": {
"$ref": "#/definitions/YaoModel.ModelOption",
"description": "配置选型"
},
"custom": {
"type": "object",
"description": "自定义扩展"
},
"$schema": {
"type": "string"
}
},
"additionalProperties": false,
"description": "模型元数据"
},
"YaoModel.Table": {
"type": "object",
"properties": {
"label": {
"type": "string",
"description": "显示标签"
},
"name": {
"type": "string",
"description": "数据表名称,if not set the default is generate from model name. eg name.space.user, table name is name_space_user"
},
"prefix": {
"type": "string",
"description": "表名前缀"
},
"comment": {
"type": "string",
"description": "数据表注释中文名"
},
"engine": {
"type": "string",
"description": "数据表引擎(MySQL ONLY) 许可值 `InnoDB`, `MyISAM`"
},
"collation": {
"type": "string",
"description": "(MySQL ONLY)"
},
"charset": {
"type": "string",
"description": "(MySQL ONLY)"
},
"primaryKeys": {
"type": "array",
"items": {
"type": "string"
},
"description": "未知"
}
},
"additionalProperties": false
},
"YaoModel.ModelColumn": {
"type": "object",
"properties": {
"label": {
"type": "string",
"description": "字段显示名称,用于在管理表单,开发平台等成场景下呈现"
},
"name": {
"type": "string",
"description": "字段名称,对应数据表中字段名称"
},
"type": {
"anyOf": [
{
"$ref": "#/definitions/YaoModel.ColumnFieldTypeEnum"
},
{
"type": "string"
}
],
"description": "字段类型"
},
"title": {
"type": "string",
"description": "字段标题,可用于开发平台中呈现"
},
"description": {
"type": "string",
"description": "字段介绍,可用于开发平台中呈现"
},
"comment": {
"type": "string",
"description": "字段注释,对应数据表中字段注释"
},
"length": {
"type": "number",
"description": "字段长度,对 `string` 等类型字段有效"
},
"precision": {
"type": "number",
"description": "字段位数(含小数位),对 `float`、`decimal` 等类型字段有效"
},
"scale": {
"type": "number",
"description": "字段小数位位数,对 `float`、`decimal` 等类型字段有效"
},
"nullable": {
"type": "boolean",
"description": "字段是否可以为空,默认为 false"
},
"option": {
"type": "array",
"items": {
"$ref": "#/definitions/YaoModel.ColumnOption"
},
"description": "字段许可值,对 `enum` 类型字段有效"
},
"default": {
"description": "string\\|number\\|float|字段默认值"
},
"default_raw": {
"type": "string",
"description": "字段默认值,支持数据库函数,如 `NOW()` default 和 default_raw 同时存在 default_raw 优先级高"
},
"example": {
"description": "示例,未使用"
},
"generate": {
"type": "string",
"description": "Increment, UUID,..."
},
"crypt": {
"type": "string",
"description": "字段加密存储方式。许可值 `AES(MySQL Only)`, `PASSWORD`"
},
"validations": {
"type": "array",
"items": {
"$ref": "#/definitions/YaoModel.Validation"
},
"description": "字段校验规则"
},
"index": {
"type": "boolean",
"description": "字段是否为索引,默认为 false"
},
"unique": {
"type": "boolean",
"description": "字段是否为唯一索引,默认为 false , 如为 true 无需同时将 `index` 设置为 true"
},
"primary": {
"type": "boolean",
"description": "字段是否为主键,每张表至多一个主键字段。默认为 false"
},
"props": {
"type": "object",
"description": "额外的配置属性"
}
},
"required": [
"label",
"name",
"type"
],
"additionalProperties": false,
"description": "模型中的字段定义"
},
"YaoModel.ColumnFieldTypeEnum": {
"type": "string",
"enum": [
"string",
"char",
"text",
"mediumText",
"longText",
"binary",
"date",
"datetime",
"datetimeTz",
"time",
"timeTz",
"timestamp",
"timestampTz",
"tinyInteger",
"tinyIncrements",
"unsignedTinyInteger",
"smallInteger",
"smallIncrements",
"unsignedSmallInteger",
"integer",
"increments",
"unsignedInteger",
"bigInteger",
"bigIncrements",
"unsignedBigInteger",
"id",
"ID",
"decimal",
"unsignedDecimal",
"float",
"unsignedFloat",
"double",
"unsignedDouble",
"boolean",
"enum",
"json",
"JSON",
"jsonb",
"JSONB",
"uuid",
"ipAddress",
"macAddress",
"year",
"vector"
]
},
"YaoModel.ColumnOption": {
"type": [
"string",
"number",
"boolean"
]
},
"YaoModel.Validation": {
"type": "object",
"properties": {
"method": {
"type": "string",
"enum": [
"typeof",
"min",
"max",
"enum",
"pattern",
"minLength",
"maxLength",
"email",
"mobile"
],
"description": "校验方法名称,可选值 `typeof`, `pattern`, `min`,`max`,`enum`,`minLength`,`maxLength`, `email`,`mobile`\n\ntypeof | `[<string>]` 许可值 `string`, `integer`, `float`, `number`, `datetime`, `timestamp`\n\nmin | `[<number\\|float>]`\n\nmax | `[<number\\|float>]`\n\nenum | `[string...]`\n\npattern | `[string]`\n\nminLength | `[<number>]`\n\nmaxLength | `[<number>]`\n\nemail | `邮件地址格式username@domain`\n\nmobile | `[<string>]` 电话"
},
"args": {
"type": "array",
"items": {},
"description": "校验方法参数,例如 `[20]`, `[\"^1[3-9]\\\\d{9}$\"]`"
},
"message": {
"type": "string",
"description": "如校验不通过,返回的错误提示。支持使用 `{{<name>}}` 引用字段信息, 如`{{label}}`将被替换为字段 `label`中定义的数值; `{{input}}` 被替换为用户输入数值。"
}
},
"required": [
"method"
],
"additionalProperties": false
},
"YaoModel.Index": {
"type": "object",
"properties": {
"comment": {
"type": "string",
"description": "备注"
},
"name": {
"type": "string",
"description": "名称"
},
"columns": {
"type": "array",
"items": {
"type": "string"
},
"description": "列名"
},
"type": {
"type": "string",
"description": "类型 primary,unique,index,match"
}
},
"additionalProperties": false
},
"YaoModel.Relation": {
"type": "object",
"properties": {
"label": {
"type": "string",
"description": "标题"
},
"type": {
"type": "string",
"enum": [
"hasOne",
"hasMany",
"hasOneThrough"
],
"description": "与当前数据模型的关系类型. `hasOne` 一对一, `hasMany` 一对多。"
},
"key": {
"type": "string",
"description": "**关联数据模型** 字段的名称,用于关联映射 (关联数据模型.key = 当前数据模型.foreign)"
},
"model": {
"type": "string",
"description": "**关联数据模型** 名称"
},
"foreign": {
"type": "string",
"description": "**当前数据模型** 字段的名称,用于关联映射 (关联数据模型.key = 当前数据模型.foreign)"
},
"links": {
"type": "array",
"items": {
"$ref": "#/definitions/YaoModel.Relation"
},
"description": "连接,未知"
},
"query": {
"$ref": "#/definitions/YaoQuery.QueryDSL",
"description": "**关联数据模型** 的查询条件,可以在查询时重载。 例: `{ \"select\": [\"id\", \"name\"] }`"
}
},
"required": [
"type",
"key",
"model",
"foreign"
],
"additionalProperties": false
},
"YaoQuery.QueryDSL": {
"type": "object",
"properties": {
"comment": {
"type": "string",
"description": "备注"
},
"select": {
"type": "array",
"items": {
"$ref": "#/definitions/YaoQuery.Expression"
},
"description": "选择字段列表"
},
"from": {
"type": "string",
"description": "查询数据表名称或数据模型"
},
"wheres": {
"type": "array",
"items": {
"$ref": "#/definitions/YaoQuery.Where"
},
"description": "数据查询条件"
},
"orders": {
"$ref": "#/definitions/YaoQuery.Orders",
"description": "排序条件"
},
"offset": {
"type": "number",
"description": "记录开始位置"
},
"first": {
"anyOf": [
{
"type": "boolean"
},
{}
],
"description": "只读取第一条"
},
"limit": {
"type": "number",
"description": "读取数据的数量"
},
"page": {
"type": "number",
"description": "分页查询当前页面页码"
},
"pagesize": {
"type": "number",
"description": "每页读取记录数量"
},
"data-only": {
"type": "boolean",
"description": "设定为 true, 查询结果为 []Record; 设定为 false, 查询结果为 Paginate, 仅在设定 `page` 或 `pagesize`时有效。"
},
"groups": {
"type": "array",
"items": {
"anyOf": [
{
"$ref": "#/definitions/YaoQuery.Group"
},
{
"type": "string"
}
]
},
"description": "聚合字段和统计层级设置"
},
"havings": {
"type": "array",
"items": {
"$ref": "#/definitions/YaoQuery.Having"
},
"description": "聚合查询结果筛选, 仅在设定 `groups` 时有效"
},
"unions": {
"type": "array",
"items": {
"$ref": "#/definitions/YaoQuery.QueryDSL"
},
"description": "联合查询。多个查询将结果合并为一张表"
},
"query": {
"$ref": "#/definitions/YaoQuery.QueryDSL",
"description": "子查询。按 QueryDSL 描述查询逻辑,生成一张二维数据表或数值。"
},
"name": {
"type": "string",
"description": "子查询别名"
},
"joins": {
"type": "array",
"items": {
"$ref": "#/definitions/YaoQuery.Join"
},
"description": "表连接。连接数据量较大的数据表时 **不推荐使用**。| 否 |"
},
"sql": {
"$ref": "#/definitions/YaoQuery.SQL",
"description": "SQL 语句。**非必要,勿使用**"
},
"debug": {
"type": "boolean",
"description": "是否开启调试(开启后计入查询日志)"
}
},
"additionalProperties": false,
"description": "QueryDSL Gou Query Domain Specific Language"
},
"YaoQuery.Expression": {
"type": "string"
},
"YaoQuery.Where": {
"type": "object",
"properties": {
"field": {
"type": "string",
"description": "查询字段"
},
"value": {
"type": "string",
"description": "匹配数值"
},
"op": {
"type": "string",
"description": "匹配关系运算符 `=`,`like`,`in`,`>=` 等,默认为 `=`\n\n| 匹配关系 | 说明 | | -------- | -------------------------------- | | = | 默认值 等于 WHERE 字段 = 数值 | | like | 匹配 WHERE 字段 like 数值 | | match | 匹配 WHERE 字段 全文检索 | | > | 大于 WHERE 字段 > 数值 | | >= | 大于等于 WHERE 字段 >= 数值 | | < | 小于 WHERE 字段 < 数值 | | <= | 小于等于 WHERE 字段 <= 数值 | | is | 为空 WHERE 字段 null / not null | | in | 列表包含 WHERE 字段 IN (数值...) | | <> | 不等于匹配值 |"
},
"or": {
"type": "boolean",
"description": "true 查询条件逻辑关系为 or, 默认为 false 查询条件逻辑关系为 and"
},
"query": {
"$ref": "#/definitions/YaoQuery.QueryDSL",
"description": "子查询, 如设定 query 则忽略 value 数值。"
},
"comment": {
"type": "string",
"description": "查询条件注释"
},
"=": {
"description": "Supported operators with their respective value types"
},
">": {},
">=": {},
"<": {},
"<=": {},
"<>": {},
"like": {},
"match": {},
"in": {},
"is": {
"type": "null",
"description": "check is field is null or not\n\nexample:\n\n{ \"field\": \"name\", \"is\": \"null\" },\n\n{ \"field\": \"name\", \"is\": \"not null\" },"
},
"wheres": {
"type": "array",
"items": {
"$ref": "#/definitions/YaoQuery.Where"
},
"description": "分组查询。用于 condition 1 and ( condition 2 OR condition 3) 的场景"
}
},
"additionalProperties": {
"description": "可以使用类似简化的操作,比如:{ \":score\": \"分数\", \"in\": [10, 20] }"
},
"description": "Where 查询条件"
},
"YaoQuery.Orders": {
"type": "array",
"items": {
"$ref": "#/definitions/YaoQuery.Order"
},
"description": "Orders 排序条件集合"
},
"YaoQuery.Order": {
"type": "object",
"properties": {
"field": {
"type": "string",
"description": "排序字段"
},
"sort": {
"type": "string",
"description": "排序方式"
},
"comment": {
"type": "string",
"description": "查询条件注释"
}
},
"required": [
"field"
],
"additionalProperties": false,
"description": "Order 排序条件"
},
"YaoQuery.Group": {
"type": "object",
"properties": {
"field": {
"$ref": "#/definitions/YaoQuery.Expression",
"description": "排序字段"
},
"rollup": {
"type": "string",
"description": "同时返回多层级统计结果,对应聚合字段数值的名称。"
},
"comment": {
"type": "string",
"description": "查询条件注释"
}
},
"additionalProperties": false,
"description": "Group 聚合条件"
},
"YaoQuery.Having": {
"type": "object",
"properties": {
"havings": {
"type": "array",
"items": {
"$ref": "#/definitions/YaoQuery.Having"
},
"description": "分组查询。用于 condition 1 and ( condition 2 OR condition 3) 的场景"
}
},
"additionalProperties": false,
"description": "Having 聚合结果筛选条件"
},
"YaoQuery.Join": {
"type": "object",
"properties": {
"from": {
"type": "string",
"description": "查询数据表名称或数据模型"
},
"key": {
"anyOf": [
{
"$ref": "#/definitions/YaoQuery.Expression"
},
{
"type": "string"
}
],
"description": "关联连接表字段名称"
},
"foreign": {
"anyOf": [
{
"$ref": "#/definitions/YaoQuery.Expression"
},
{
"type": "string"
}
],
"description": "关联目标表字段名称(需指定表名或别名)"
},
"left": {
"type": "boolean",
"description": "true 连接方式为 LEFT JOIN, 默认为 false 连接方式为 JOIN"
},
"right": {
"type": "boolean",
"description": "true 连接方式为 RIGHT JOIN, 默认为 false 连接方式为 JOIN"
},
"comment": {
"type": "string",
"description": "关联条件注释"
}
},
"additionalProperties": false,
"description": "Join 数据表连接"
},
"YaoQuery.SQL": {
"type": "object",
"properties": {
"stmt": {
"type": "string",
"description": "SQL 语句,不可跟其它sql查询条件一起混用"
},
"args": {
"type": "array",
"items": {},
"description": "绑定参数表"
},
"comment": {
"type": "string",
"description": "SQL语句注释"
}
},
"additionalProperties": false,
"description": "SQL 语句"
},
"YaoModel.ModelOption": {
"type": "object",
"properties": {
"timestamps": {
"type": "boolean",
"description": "created_at, updated_at 字段"
},
"soft_deletes": {
"type": "boolean",
"description": "deleted_at 字段"
},
"trackings": {
"type": "boolean",
"description": "created_by, updated_by, deleted_by 字段"
},
"constraints": {
"type": "boolean",
"description": "约束定义"
},
"permission": {
"type": "boolean",
"description": "__permission 字段"
},
"logging": {
"type": "boolean",
"description": "__logging_id 字段"
},
"read_only": {
"type": "boolean",
"description": "Ignore the migrate operation"
}
},
"additionalProperties": false
}
}
}