功能:增强 Schema 系统和添加新示例

- 扩展 Schema 支持更多数据类型(Duration、URL、JSON 等)
- 优化 SSTable 编码解码性能
- 添加多个新示例程序:
  - all_types: 展示所有支持的数据类型
  - new_types: 演示新增类型的使用
  - struct_tags: 展示结构体标签功能
  - time_duration: 时间和持续时间处理示例
- 完善测试用例和文档
- 优化代码结构和错误处理
This commit is contained in:
2025-10-10 00:20:45 +08:00
parent 6d04487789
commit 77087d36c6
41 changed files with 3008 additions and 452 deletions

View File

@@ -12,8 +12,8 @@ func TestLazyLoadingBasic(t *testing.T) {
defer os.RemoveAll(tmpDir)
schema, err := NewSchema("users", []Field{
{Name: "name", Type: FieldTypeString},
{Name: "age", Type: FieldTypeInt64},
{Name: "name", Type: String},
{Name: "age", Type: Int64},
})
if err != nil {
t.Fatal(err)
@@ -71,8 +71,8 @@ func TestLazyLoadingVsEagerLoading(t *testing.T) {
defer os.RemoveAll(tmpDir)
schema, err := NewSchema("users", []Field{
{Name: "name", Type: FieldTypeString},
{Name: "age", Type: FieldTypeInt64},
{Name: "name", Type: String},
{Name: "age", Type: Int64},
})
if err != nil {
t.Fatal(err)
@@ -151,9 +151,9 @@ func TestIndexQueryIsEager(t *testing.T) {
defer os.RemoveAll(tmpDir)
schema, err := NewSchema("users", []Field{
{Name: "name", Type: FieldTypeString},
{Name: "email", Type: FieldTypeString, Indexed: true},
{Name: "age", Type: FieldTypeInt64},
{Name: "name", Type: String},
{Name: "email", Type: String, Indexed: true},
{Name: "age", Type: Int64},
})
if err != nil {
t.Fatal(err)
@@ -236,9 +236,9 @@ func TestLazyLoadingWithConditions(t *testing.T) {
defer os.RemoveAll(tmpDir)
schema, err := NewSchema("users", []Field{
{Name: "name", Type: FieldTypeString},
{Name: "age", Type: FieldTypeInt64},
{Name: "active", Type: FieldTypeBool},
{Name: "name", Type: String},
{Name: "age", Type: Int64},
{Name: "active", Type: Bool},
})
if err != nil {
t.Fatal(err)
@@ -314,8 +314,8 @@ func TestFirstDoesNotLoadAll(t *testing.T) {
defer os.RemoveAll(tmpDir)
schema, err := NewSchema("users", []Field{
{Name: "name", Type: FieldTypeString},
{Name: "age", Type: FieldTypeInt64},
{Name: "name", Type: String},
{Name: "age", Type: Int64},
})
if err != nil {
t.Fatal(err)