package main import ( "fmt" "log" "time" "linedb/pkg/linedb" ) type User struct { ID int `json:"id"` Name string `json:"name"` Email string `json:"email"` Age int `json:"age"` Created string `json:"created"` } func main() { // Создаем опции инициализации initOptions := &linedb.LineDbInitOptions{ CacheSize: 1000, CacheTTL: 5 * time.Minute, DBFolder: "./data", Collections: []linedb.JSONLFileOptions{ { CollectionName: "users", AllocSize: 512, IndexedFields: []string{"id", "email", "name"}, }, }, } // Создаем базу данных db := linedb.NewLineDb(nil) // Инициализируем базу данных if err := db.Init(false, initOptions); err != nil { log.Fatalf("Failed to init database: %v", err) } defer db.Close() // Создаем тестовых пользователей users := []any{ map[string]any{ "name": "John Doe", "email": "john@example.com", "age": 30, "created": time.Now().Format(time.RFC3339), }, map[string]any{ "name": "Jane Smith", "email": "jane@example.com", "age": 25, "created": time.Now().Format(time.RFC3339), }, map[string]any{ "name": "Bob Johnson", "email": "bob@example.com", "age": 35, "created": time.Now().Format(time.RFC3339), }, } // Вставляем пользователей if err := db.Insert(users, "users", linedb.LineDbAdapterOptions{}); err != nil { log.Fatalf("Failed to insert users: %v", err) } fmt.Println("Users inserted successfully!") // Читаем всех пользователей allUsers, err := db.Read("users", linedb.LineDbAdapterOptions{}) if err != nil { log.Fatalf("Failed to read users: %v", err) } fmt.Printf("Total users: %d\n", len(allUsers)) for i, user := range allUsers { fmt.Printf("User %d: %+v\n", i+1, user) } // Ищем пользователя по email filter := map[string]any{"email": "john@example.com"} foundUsers, err := db.ReadByFilter(filter, "users", linedb.LineDbAdapterOptions{}) if err != nil { log.Fatalf("Failed to filter users: %v", err) } fmt.Printf("Found %d users with email john@example.com\n", len(foundUsers)) for _, user := range foundUsers { fmt.Printf("Found user: %+v\n", user) } // Обновляем пользователя updateData := map[string]any{"age": 31} updateFilter := map[string]any{"email": "john@example.com"} updatedUsers, err := db.Update(updateData, "users", updateFilter, linedb.LineDbAdapterOptions{}) if err != nil { log.Fatalf("Failed to update user: %v", err) } fmt.Printf("Updated %d users\n", len(updatedUsers)) // Удаляем пользователя deleteFilter := map[string]any{"email": "bob@example.com"} deletedUsers, err := db.Delete(deleteFilter, "users", linedb.LineDbAdapterOptions{}) if err != nil { log.Fatalf("Failed to delete user: %v", err) } fmt.Printf("Deleted %d users\n", len(deletedUsers)) // Читаем оставшихся пользователей remainingUsers, err := db.Read("users", linedb.LineDbAdapterOptions{}) if err != nil { log.Fatalf("Failed to read remaining users: %v", err) } fmt.Printf("Remaining users: %d\n", len(remainingUsers)) for i, user := range remainingUsers { fmt.Printf("Remaining user %d: %+v\n", i+1, user) } }