| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186 |
- package meta
- type ConnectionConfig struct {
- Host string `json:"host"` // 数据库服务器地址
- Port int `json:"port"` // 数据库服务器端口
- Username string `json:"username"` // 数据库用户名
- Password string `json:"password"` // 数据库密码
- Database string `json:"database"` // 要连接的数据库名称
- Schema string `json:"schema"` // 模式名称
- ExtraParams map[string]string `json:"extra_params"` // 额外的连接参数,如字符集、超时设置等
- // 连接池配置 - 用于管理数据库连接的生命周期和性能优化
- MaxOpenConns int `json:"max_open_conns"` // 最大打开连接数,0 表示无限制
- MaxIdleConns int `json:"max_idle_conns"` // 最大空闲连接数,默认 2
- MaxIdleTime int `json:"max_idle_time,omitempty"` // 单个连接最大空闲时长(秒),0 表示不限制
- MaxLifetime int `json:"max_lifetime"` // 连接最大存活时间(秒),0 表示永不过期
- }
- // GenericObject 通用数据库对象
- type GenericObject struct {
- ID string `json:"id"` // 唯一标识
- Name string `json:"name"` // 对象名称
- Description string `json:"description,omitempty"` // 简短描述,用于 UI 展示或类型占位说明
- Type string `json:"type"` // 对象类型(table、column等)
- ParentID string `json:"parentId"` // 父对象ID
- DBType string `json:"dbType"` // 数据库类型(mysql、oracle等)。保留字段名 `DBType` 用于驱动/元数据定位,注意该字段与对象的 `Type` 字段语义不同。
- Attrs map[string]string `json:"attrs"` // 动态属性(统一为 string 以避免 interface{})
- Children []GenericObject `json:"children"` // 子对象
- }
- // ObjectPathEntry 表示对象路径中的一段(自上而下的单个层级)
- // 例:定位表 users 的路径为:[{"type":"database","name":"mydb"},{"type":"table","name":"users"}]
- type ObjectPathEntry struct {
- Type string `json:"type"` // 对象类型,例如 database/table/column
- Name string `json:"name"` // 对象在该层级下的名称
- }
- // ObjectPath 表示从根到目标对象的完整层级路径(数组按从上到下的顺序排列)
- // 使用示例:
- // - 数据库 mydb: [{"type":"database","name":"mydb"}]
- // - 表 users: [{"type":"database","name":"mydb"},{"type":"table","name":"users"}]
- // - 列 email: [{"type":"database","name":"mydb"},{"type":"table","name":"users"},{"type":"column","name":"email"}]
- type ObjectPath []ObjectPathEntry
- // ObjectOperationRequest 通用对象操作请求(创建/修改/删除)
- type ObjectOperationRequest struct {
- // Execute 指示是否在服务端直接执行操作(true)还是仅生成/返回将被执行的 SQL(false,默认)。
- // 注意:某些数据库对 DDL 不支持事务回滚(例如 MySQL 的 DROP DATABASE/TABLE 在多数情况下不可回滚),
- // 即使使用事务包装也可能无法完全回滚。该字段用于控制驱动层的执行策略。
- Execute bool `json:"execute"`
- Object GenericObject `json:"object"` // 目标对象(创建/修改时需完整属性,删除时只需ID/Name/Type等标识)
- Options map[string]interface{} `json:"options"` // 额外选项(如创建表时的"ifNotExists": true)
- }
- // ObjectOperationResponse 操作响应
- type ObjectOperationResponse struct {
- Affected int64 `json:"affected"` // 影响行数(如删除表时可能为0,但操作成功)
- ObjectID string `json:"objectID"` // 创建操作时返回新对象的ID
- Sql string `json:"sql"` // 生成的SQL语句(可选,供前端调试)
- }
- // (ValidationError removed) Drivers should return plain errors (fmt.Errorf) for validation or other failures.
- // TemplateField 描述模板(用于创建或修改)中的一个字段(供前端渲染表单或编辑界面)
- // 此结构比原先的 CreateField 更通用,既可用于 Create 也可用于 Update 场景。
- type TemplateField struct {
- Name string `json:"name"` // 字段标识,如 tableName/columns
- Label string `json:"label,omitempty"` // 前端展示标签
- Type FieldType `json:"type"` // string/int/bool/enum/list/object 等
- Required bool `json:"required,omitempty"` // 是否必填
- Default string `json:"default,omitempty"`
- Help string `json:"help,omitempty"`
- EnumOptions []string `json:"enumOptions,omitempty"` // 当 Type=="enum"
- NestedFields []TemplateField `json:"nestedFields,omitempty"` // 当 Type 为复杂类型时使用(如 columns 列表的子字段)
- // 以下字段为扩展,用于修改场景:
- Editable *bool `json:"editable,omitempty"` // 是否可编辑,nil 表示未指定(驱动可根据情况返回)
- Current interface{} `json:"current,omitempty"` // 当前值,用于修改时展示
- AllowedOps []string `json:"allowedOps,omitempty"` // 允许的操作,如 ["add","modify","drop","rename"]
- }
- // FieldType 常量,表示 TemplateField.Type 的可用值
- type FieldType string
- const (
- FieldTypeString FieldType = "string"
- FieldTypeInt FieldType = "int"
- FieldTypeBool FieldType = "bool"
- FieldTypeNumber FieldType = "number"
- FieldTypeBoolean FieldType = "boolean"
- FieldTypeEnum FieldType = "enum"
- FieldTypeList FieldType = "list"
- FieldTypeObject FieldType = "object"
- FieldTypeTextarea FieldType = "textarea"
- )
- // ObjectTemplate 用于描述某类型对象在给定父上下文下的创建或修改模板
- // Fields 使用 TemplateField,可同时支持创建与修改场景。
- type ObjectTemplate struct {
- ObjectType string `json:"objectType"`
- // Operation 指示模板用途:"create" | "update" | "delete"。
- // 保持向后兼容:旧实现若未设置该字段,仍按调用接口语义处理。
- Operation string `json:"operation,omitempty"`
- ParentHint string `json:"parentHint,omitempty"` // 提示父上下文(例如需要传入 db 名称)
- Fields []TemplateField `json:"fields"`
- // Current 提供对象在修改场景下的当前值(key->value),供前端渲染默认值。
- // 为了统一模板字段的字符串默认值表现(TemplateField.Default 为 string),
- // 此处使用 map[string]string 保存字段名到其字符串表示的当前值。
- // 在 create/delete 场景通常为空。
- Current map[string]string `json:"current,omitempty"`
- // Example 提供示例值,用于前端显示示例或自动填充。使用 map[string]string
- // 以保持示例值的简单字符串表示(可扩展为 JSON 字符串或约定的编码格式)。
- Example map[string]string `json:"example,omitempty"`
- Notes string `json:"notes,omitempty"`
- // AllowedOps 在删除或复杂修改场景下指示驱动允许的细粒度操作
- //(例如:"add","modify","drop","rename")。前端可据此决定显示的控件或确认级别。
- AllowedOps []string `json:"allowedOps,omitempty"`
- }
- // CreateObjectRequest 前端提交的创建请求(用于预览或执行)
- type CreateObjectRequest struct {
- ObjectType string `json:"objectType" binding:"required"`
- ParentName string `json:"parentName,omitempty"`
- Properties map[string]interface{} `json:"properties" binding:"required"` // 表单提交的字段
- Execute bool `json:"execute,omitempty"` // false=preview only, true=execute
- Options map[string]interface{} `json:"options,omitempty"`
- }
- // CreateObjectResponse 创建/预览响应
- type CreateObjectResponse struct {
- ObjectID string `json:"objectID,omitempty"`
- GeneratedSQL []string `json:"generatedSQL,omitempty"` // 生成的 SQL 语句
- }
- // UpdateObjectRequest 前端提交的修改请求(用于预览或执行)
- type UpdateObjectRequest struct {
- Path ObjectPath `json:"path" binding:"required"` // 目标对象的路径
- Properties map[string]interface{} `json:"properties" binding:"required"` // 表单提交的字段
- Execute bool `json:"execute,omitempty"` // false=preview only, true=execute
- Options map[string]interface{} `json:"options,omitempty"`
- }
- // UpdateObjectResponse 修改/预览响应
- type UpdateObjectResponse struct {
- ObjectID string `json:"objectID,omitempty"`
- GeneratedSQL []string `json:"generatedSQL,omitempty"` // 生成的 SQL 语句
- }
- // // AttrMeta 属性元信息
- // type AttrMeta struct {
- // Name string `json:"name"` // 属性名
- // Type string `json:"type"` // 类型(string/bool/int)
- // Required bool `json:"required"` // 是否必填
- // Description string `json:"description"` // 描述
- // }
- // // TypeMeta 对象类型元信息
- // type TypeMeta struct {
- // Type string `json:"type"` // 对象类型(table、column等)
- // Description string `json:"description"` // 描述
- // CommonAttrs []AttrMeta `json:"commonAttrs"` // 通用属性
- // DBAttrs map[string][]AttrMeta `json:"dbAttrs"` // 数据库特有属性(key: dbType)
- // }
- // MetadataCapabilities 是更通用的元信息描述,适用于任意数据引擎或数据源。
- // 建议驱动实现该结构以报告引擎能力、关键字、数据类型及其他可选能力。
- type MetadataCapabilities struct {
- // Keywords 支持的关键字/保留字列表
- Keywords []string `json:"keywords,omitempty"`
- // FieldTypes 支持的数据类型列表(规范化为大写,例如 INT, BIGINT, VARCHAR)
- FieldTypes []string `json:"fieldTypes,omitempty"`
- // TypeAliases 可选:将逻辑类型映射到底层类型集合,例如 {"string": ["VARCHAR","TEXT"]}
- TypeAliases map[string][]string `json:"typeAliases,omitempty"`
- // Capabilities 用于描述可选能力的布尔标志(例如 supportsTransactions、supportsDDLTransaction)
- Capabilities map[string]bool `json:"capabilities,omitempty"`
- // Functions 列表(可选):内置函数/聚合等,供自动完成或能力检测使用
- Functions []string `json:"functions,omitempty"`
- }
|