Files
elowdb-go/debug_app.go
2026-04-07 15:04:38 +06:00

141 lines
4.3 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.

package main
import (
"fmt"
"os"
"time"
"direct-dev.ru/gitea/GiteaAdmin/elowdb-go/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("=== Все тесты прошли успешно! ===")
}