| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384 |
- package meta
- type DataMeta struct {
- Name string `json:"name"` // 名称(列名、行标识等)
- Type string `json:"type"` // 类型("column"、"row"、"value"等)
- FieldType FieldType `json:"fieldType,omitempty"` // 表单类型(保留)
- DBType string `json:"dbType,omitempty"` // 数据库类型(如 "VARCHAR(255)"、"INT")
- Nullable bool `json:"nullable,omitempty"` // 是否可空
- Value interface{} `json:"value,omitempty"` // 值(原生 Go 类型:string/int/float/bool/[]byte/nil)
- ValueType FieldType `json:"valueType,omitempty"` // 值类型(用于前端说明:string/int/bool等)
- RowID string `json:"rowId,omitempty"` // 行ID(仅对Type="row"有效,用于唯一标识数据行)
- Attrs map[string]string `json:"attrs,omitempty"` // 额外属性
- Meta map[string]string `json:"meta,omitempty"` // 元数据
- Children []DataMeta `json:"children,omitempty"` // 子项(用于行内的列值等)
- }
- type QueryResult struct {
- Columns []DataMeta `json:"columns"` // 列元信息:每项代表一列(Type 通常为 "column")
- Rows []DataMeta `json:"rows,omitempty"` // 行数据:每行用 DataMeta 表示(Type="row"),Children 为列值(Type="value")
- Total *int64 `json:"total,omitempty"` // 结果总条数;仅当请求 IncludeTotal=true 时返回
- Returned int `json:"returned"` // 本次实际返回的行数(Rows 的长度)
- Truncated bool `json:"truncated"` // 是否因 Limit/驱动限制而截断
- Stats map[string]string `json:"stats,omitempty"` // 执行统计/诊断信息(字符串键值对),如耗时、命中索引等
- }
- // ExecuteResult SQL执行结果
- type ExecuteResult struct {
- Success bool `json:"success"` // 执行是否成功
- SQLType string `json:"sqlType"` // SQL类型(SELECT/INSERT/UPDATE/DELETE/CREATE/DROP等)
- AffectedRows int64 `json:"affectedRows,omitempty"` // 影响行数(INSERT/UPDATE/DELETE)
- LastInsertID interface{} `json:"lastInsertId,omitempty"` // 最后插入ID(INSERT)
- Data *QueryResult `json:"data,omitempty"` // 查询结果(SELECT语句)
- ErrorMessage string `json:"errorMessage,omitempty"` // 错误信息
- ExecutionTime int64 `json:"executionTime"` // 执行时间(毫秒)
- RowsReturned int `json:"rowsReturned,omitempty"` // 返回的行数(SELECT语句)
- }
- // SortField 排序字段描述
- // Desc: 是否降序;未设置或 false 表示升序
- type SortField struct {
- Column string `json:"column"` // 列名(与 Columns 中的 Name 对应)
- Desc bool `json:"desc,omitempty"` // 是否降序
- }
- // DataQueryRequest 数据查询请求参数(与 DataReader.QueryData 搭配)
- // 设计目标:80% 场景只需少量字段;其他可后续扩展(例如复杂表达式、函数、分片信息等)。
- // 可扩展策略:保持字段语义清晰,不嵌套过深;需要复杂 DSL 时新增 Expr/Conditions。
- type DataQueryRequest struct {
- // Columns 指定需要返回的列名列表;为空或 nil 表示返回全部列。
- Columns []string `json:"columns,omitempty"`
- // Filters 简单等值过滤(列名 -> 字符串值)。
- // 说明:
- // - 统一用字符串承载值,驱动层负责必要的类型转换/参数化绑定。
- // - 复杂条件(范围/like/函数等)可在后续通过新增 Conditions/Expr 等字段扩展。
- Filters map[string]string `json:"filters,omitempty"`
- // Order 排序字段列表(可多列)。
- Order []SortField `json:"order,omitempty"`
- // Offset 起始偏移(与 Limit 组合实现分页)。
- Offset int `json:"offset,omitempty"`
- // Limit 返回最大行数。0 或 <0 表示使用驱动默认/不限制(谨慎)。
- Limit int `json:"limit,omitempty"`
- // IncludeTotal 是否计算总行数(可能触发额外 COUNT 开销)。
- IncludeTotal bool `json:"includeTotal,omitempty"`
- // Stream 是否采用流式读取(true 时可能分批返回;具体协议将来扩展)。
- Stream bool `json:"stream,omitempty"`
- // Args 预编译/参数化查询的占位符参数(全部以字符串表示,驱动负责转换与绑定)。
- Args []string `json:"args,omitempty"`
- // QueryID 调用方生成的查询唯一标识(用于幂等/重试跟踪)。
- QueryID string `json:"queryId,omitempty"`
- // TimeoutMs 单次查询的超时时间(毫秒);0 表示使用 ctx 或驱动默认。
- TimeoutMs int `json:"timeoutMs,omitempty"`
- // Fetch 是否执行查询并返回数据;false 时仅返回生成的 SQL 语句(预览模式),不实际执行查询。
- Fetch bool `json:"fetch,omitempty"`
- }
|