141 lines
4.3 KiB
Go
141 lines
4.3 KiB
Go
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("=== Все тесты прошли успешно! ===")
|
||
}
|