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