init elowdb go-port commit
This commit is contained in:
124
examples/basic/main.go
Normal file
124
examples/basic/main.go
Normal file
@@ -0,0 +1,124 @@
|
||||
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)
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user