Files
2026-04-07 15:04:38 +06:00

58 lines
1.7 KiB
Go
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

// Тест: нормализация существующего файла при Init (приведение записей к allocSize-1).
// Запуск: go run ./examples/test-init-normalize/main.go
// Файлы остаются в ./data/test-init-normalize/
package main
import (
"fmt"
"log"
"os"
"time"
"direct-dev.ru/gitea/GiteaAdmin/elowdb-go/pkg/linedb"
)
func main() {
dataDir := "./data/test-init-normalize"
os.MkdirAll(dataDir, 0755)
// Создаём файл с записями разной длины ДО Init
filePath := dataDir + "/norm.jsonl"
content := `{"id":1,"a":"x"}
{"id":2,"a":"yy"}
{"id":3,"a":"zzz"} `
if err := os.WriteFile(filePath, []byte(content), 0644); err != nil {
log.Fatalf("Write file: %v", err)
}
fmt.Printf("Создан файл с записями разной длины:\n%s\n", content)
initOptions := &linedb.LineDbInitOptions{
CacheSize: 100,
CacheTTL: time.Minute,
DBFolder: dataDir,
Collections: []linedb.JSONLFileOptions{
{CollectionName: "norm", AllocSize: 128},
},
}
db := linedb.NewLineDb(nil)
fmt.Println("\nInit (нормализация записей к allocSize-1=99)...")
if err := db.Init(false, initOptions); err != nil {
log.Fatalf("Init failed: %v", err)
}
defer db.Close()
all, err := db.Read("norm", linedb.LineDbAdapterOptions{})
if err != nil {
log.Fatalf("Read failed: %v", err)
}
fmt.Printf("Прочитано записей: %d\n", len(all))
for i, r := range all {
fmt.Printf(" [%d] %+v\n", i+1, r)
}
raw, _ := os.ReadFile(filePath)
fmt.Printf("\nФайл после нормализации:\n%s\n", string(raw))
fmt.Printf("Файл сохранён: %s\n", filePath)
}