data.go 4.8 KB

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