init elowdb go-port commit

This commit is contained in:
41 changed files with 7273 additions and 0 deletions

140
debug_app.go Normal file
View File

@@ -0,0 +1,140 @@
package main
import (
"fmt"
"os"
"time"
"linedb/pkg/linedb"
)
func main() {
fmt.Println("=== LineDB Debug Test ===")
// Очищаем тестовую папку
fmt.Println("1. Очистка тестовой папки...")
os.RemoveAll("./testdata")
// Создаем опции инициализации
fmt.Println("2. Создание опций инициализации...")
initOptions := &linedb.LineDbInitOptions{
CacheSize: 100,
CacheTTL: time.Minute,
DBFolder: "./testdata",
Collections: []linedb.JSONLFileOptions{
{
CollectionName: "test",
AllocSize: 256,
},
},
}
fmt.Printf(" CacheSize: %d\n", initOptions.CacheSize)
fmt.Printf(" CacheTTL: %v\n", initOptions.CacheTTL)
fmt.Printf(" DBFolder: %s\n", initOptions.DBFolder)
fmt.Printf(" Collections: %d\n", len(initOptions.Collections))
// Создаем базу данных
fmt.Println("3. Создание базы данных...")
db := linedb.NewLineDb(nil)
defer func() {
fmt.Println("9. Закрытие базы данных...")
db.Close()
}()
fmt.Printf(" DB создан: %v\n", db != nil)
// Инициализируем базу данных
fmt.Println("4. Инициализация базы данных...")
if err := db.Init(false, initOptions); err != nil {
fmt.Printf(" ОШИБКА: %v\n", err)
return
}
fmt.Println(" База данных инициализирована успешно!")
// Тест вставки
fmt.Println("5. Тест вставки данных...")
testData := map[string]any{
"name": "test",
"value": 123,
"debug": true,
}
fmt.Printf(" Вставляемые данные: %+v\n", testData)
if err := db.Insert(testData, "test", linedb.LineDbAdapterOptions{}); err != nil {
fmt.Printf(" ОШИБКА при вставке: %v\n", err)
return
}
fmt.Println(" Данные вставлены успешно!")
// Тест чтения
fmt.Println("6. Тест чтения данных...")
allData, err := db.Read("test", linedb.LineDbAdapterOptions{})
if err != nil {
fmt.Printf(" ОШИБКА при чтении: %v\n", err)
return
}
fmt.Printf(" Прочитано записей: %d\n", len(allData))
for i, record := range allData {
fmt.Printf(" Запись %d: %+v\n", i+1, record)
}
if len(allData) != 1 {
fmt.Printf(" ОШИБКА: Ожидалось 1 запись, получено %d\n", len(allData))
return
}
// Тест фильтрации
fmt.Println("7. Тест фильтрации...")
filter := map[string]any{"name": "test"}
fmt.Printf(" Фильтр: %+v\n", filter)
filteredData, err := db.ReadByFilter(filter, "test", linedb.LineDbAdapterOptions{})
if err != nil {
fmt.Printf(" ОШИБКА при фильтрации: %v\n", err)
return
}
fmt.Printf(" Отфильтровано записей: %d\n", len(filteredData))
for i, record := range filteredData {
fmt.Printf(" Отфильтрованная запись %d: %+v\n", i+1, record)
}
// Тест обновления
fmt.Println("8. Тест обновления...")
updateData := map[string]any{"value": 456, "updated": true}
updateFilter := map[string]any{"name": "test"}
fmt.Printf(" Данные для обновления: %+v\n", updateData)
fmt.Printf(" Фильтр обновления: %+v\n", updateFilter)
updatedData, err := db.Update(updateData, "test", updateFilter, linedb.LineDbAdapterOptions{})
if err != nil {
fmt.Printf(" ОШИБКА при обновлении: %v\n", err)
return
}
fmt.Printf(" Обновлено записей: %d\n", len(updatedData))
for i, record := range updatedData {
fmt.Printf(" Обновленная запись %d: %+v\n", i+1, record)
}
// Проверяем результат обновления
fmt.Println("9. Проверка результата обновления...")
finalData, err := db.Read("test", linedb.LineDbAdapterOptions{})
if err != nil {
fmt.Printf(" ОШИБКА при финальном чтении: %v\n", err)
return
}
fmt.Printf(" Финальное количество записей: %d\n", len(finalData))
for i, record := range finalData {
fmt.Printf(" Финальная запись %d: %+v\n", i+1, record)
}
fmt.Println("=== Все тесты прошли успешно! ===")
}