Files
elowdb-go/examples/encode/main.go
2026-03-04 16:29:24 +06:00

62 lines
1.4 KiB
Go

// Пример использования Encode — шифрование записей в коллекции (AES-256-GCM).
package main
import (
"fmt"
"log"
"os"
"time"
"linedb/pkg/linedb"
)
func main() {
os.RemoveAll("./data")
initOptions := &linedb.LineDbInitOptions{
CacheSize: 100,
CacheTTL: time.Minute,
DBFolder: "./data",
Collections: []linedb.JSONLFileOptions{
{
CollectionName: "secret_users",
AllocSize: 256,
Encode: true,
EncodeKey: "my-secret-password-12345",
},
},
}
db := linedb.NewLineDb(nil)
if err := db.Init(false, initOptions); err != nil {
log.Fatalf("Init failed: %v", err)
}
defer db.Close()
opts := linedb.LineDbAdapterOptions{}
// Вставка
users := []any{
map[string]any{"name": "alice", "email": "alice@secret.com", "role": "admin"},
map[string]any{"name": "bob", "email": "bob@secret.com", "role": "user"},
}
if err := db.Insert(users, "secret_users", opts); err != nil {
log.Fatalf("Insert failed: %v", err)
}
fmt.Println("Insert OK")
// Чтение
all, err := db.Read("secret_users", opts)
if err != nil {
log.Fatalf("Read failed: %v", err)
}
fmt.Printf("Records: %d\n", len(all))
for _, r := range all {
fmt.Printf(" %+v\n", r)
}
// Файл содержит зашифрованные строки (base64)
raw, _ := os.ReadFile("./data/secret_users.jsonl")
fmt.Printf("\nRaw file (encrypted base64):\n%s\n", string(raw))
}