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"` }