package main

import (
	"fmt"
	"os"

	"igit.com/xbase/raft/db"
)

func main() {
	dir := "test_db_data"
	os.RemoveAll(dir) // Start fresh
	
	fmt.Println("Initializing DB Engine...")
	e, err := db.NewEngine(dir)
	if err != nil {
		panic(err)
	}
	
	fmt.Println("\n1. Insert initial data (Append)")
	e.Set("config.timeout", "10s", 1)       // len=3, cap=16
	e.Set("config.retries", "3", 2)         // len=1, cap=16
	e.Set("app.name", "demo-app-v1", 3)     // len=11, cap=16
	
	fmt.Println("\n2. In-place update (Same length or smaller)")
	e.Set("config.timeout", "20s", 4)       // len=3, cap=16 -> In-place!
	
	fmt.Println("\n3. In-place update (Larger but fits capacity)")
	e.Set("config.retries", "10", 5)        // len=2, cap=16 -> In-place! (was 1)
	
	fmt.Println("\n4. Append update (Exceeds capacity)")
	e.Set("app.name", "demo-application-v2-long-name", 6) // len=29, cap=32 -> Append!
	
	e.Close()
	fmt.Println("\nDB Closed. Run inspector to see file layout.")
	fmt.Printf("\nTry running:\n go run example/database/inspector.go %s\n", dir)
}

