重构:清理项目结构和完善文档

- 添加完整的 DOCS.md 文档(1376 行)
- 更新 README.md,增强项目说明
- 清理临时示例和测试数据
- 删除诊断工具(已完成测试)
- 为 webui 示例准备测试数据
- 优化 .gitignore 配置
- 增强 Query 和 Schema 功能
- 改进 SSTable 编码处理
This commit is contained in:
2025-10-10 16:38:19 +08:00
parent 8d750505fb
commit 7d2bb4745c
76 changed files with 1865 additions and 3587 deletions

View File

@@ -3,6 +3,7 @@ package srdb
import (
"bytes"
"encoding/binary"
"encoding/json"
"fmt"
"os"
"path/filepath"
@@ -384,6 +385,36 @@ func writeFieldBinaryValue(buf *bytes.Buffer, typ FieldType, value any) error {
// 存储为纳秒int64
return binary.Write(buf, binary.LittleEndian, int64(v))
// Object 类型(使用 JSON 编码)
case Object:
// 使用 JSON 序列化
data, err := json.Marshal(value)
if err != nil {
return fmt.Errorf("marshal object: %w", err)
}
// 写入长度
if err := binary.Write(buf, binary.LittleEndian, uint32(len(data))); err != nil {
return err
}
// 写入数据
_, err = buf.Write(data)
return err
// Array 类型(使用 JSON 编码)
case Array:
// 使用 JSON 序列化
data, err := json.Marshal(value)
if err != nil {
return fmt.Errorf("marshal array: %w", err)
}
// 写入长度
if err := binary.Write(buf, binary.LittleEndian, uint32(len(data))); err != nil {
return err
}
// 写入数据
_, err = buf.Write(data)
return err
default:
return fmt.Errorf("unsupported field type: %d", typ)
}
@@ -451,6 +482,24 @@ func writeFieldZeroValue(buf *bytes.Buffer, typ FieldType) error {
case Duration:
return binary.Write(buf, binary.LittleEndian, int64(0))
// Object 类型(零值:空 JSON 对象 {}
case Object:
data := []byte("{}")
if err := binary.Write(buf, binary.LittleEndian, uint32(len(data))); err != nil {
return err
}
_, err := buf.Write(data)
return err
// Array 类型(零值:空 JSON 数组 []
case Array:
data := []byte("[]")
if err := binary.Write(buf, binary.LittleEndian, uint32(len(data))); err != nil {
return err
}
_, err := buf.Write(data)
return err
default:
return fmt.Errorf("unsupported field type: %d", typ)
}
@@ -784,6 +833,44 @@ func readFieldBinaryValue(buf *bytes.Reader, typ FieldType, keep bool) (any, err
}
return nil, nil
// Object 类型(使用 JSON 解码)
case Object:
var length uint32
if err := binary.Read(buf, binary.LittleEndian, &length); err != nil {
return nil, err
}
data := make([]byte, length)
if _, err := buf.Read(data); err != nil {
return nil, err
}
if keep {
var obj map[string]any
if err := json.Unmarshal(data, &obj); err != nil {
return nil, fmt.Errorf("unmarshal object: %w", err)
}
return obj, nil
}
return nil, nil
// Array 类型(使用 JSON 解码)
case Array:
var length uint32
if err := binary.Read(buf, binary.LittleEndian, &length); err != nil {
return nil, err
}
data := make([]byte, length)
if _, err := buf.Read(data); err != nil {
return nil, err
}
if keep {
var arr []any
if err := json.Unmarshal(data, &arr); err != nil {
return nil, fmt.Errorf("unmarshal array: %w", err)
}
return arr, nil
}
return nil, nil
default:
return nil, fmt.Errorf("unsupported field type: %d", typ)
}