Files
srdb/examples/webui/main.go
bourdon ae87c38776 Initial commit: SRDB - High-performance LSM-Tree database
- Core engine with MemTable, SST, WAL
- B+Tree indexing for SST files  
- Leveled compaction strategy
- Multi-table database management
- Schema validation and secondary indexes
- Query builder with complex conditions
- Web UI with HTMX for data visualization
- Command-line tools for diagnostics
2025-10-08 06:38:28 +08:00

99 lines
3.1 KiB
Go

package main
import (
"flag"
"fmt"
"os"
"code.tczkiot.com/srdb/examples/webui/commands"
)
func main() {
if len(os.Args) < 2 {
printUsage()
os.Exit(1)
}
command := os.Args[1]
args := os.Args[2:]
switch command {
case "webui", "serve":
serveCmd := flag.NewFlagSet("webui", flag.ExitOnError)
dbPath := serveCmd.String("db", "./data", "Database directory path")
addr := serveCmd.String("addr", ":8080", "Server address")
serveCmd.Parse(args)
commands.StartWebUI(*dbPath, *addr)
case "check-data":
checkDataCmd := flag.NewFlagSet("check-data", flag.ExitOnError)
dbPath := checkDataCmd.String("db", "./data", "Database directory path")
checkDataCmd.Parse(args)
commands.CheckData(*dbPath)
case "check-seq":
checkSeqCmd := flag.NewFlagSet("check-seq", flag.ExitOnError)
dbPath := checkSeqCmd.String("db", "./data", "Database directory path")
checkSeqCmd.Parse(args)
commands.CheckSeq(*dbPath)
case "dump-manifest":
dumpCmd := flag.NewFlagSet("dump-manifest", flag.ExitOnError)
dbPath := dumpCmd.String("db", "./data", "Database directory path")
dumpCmd.Parse(args)
commands.DumpManifest(*dbPath)
case "inspect-all-sst":
inspectAllCmd := flag.NewFlagSet("inspect-all-sst", flag.ExitOnError)
sstDir := inspectAllCmd.String("dir", "./data/logs/sst", "SST directory path")
inspectAllCmd.Parse(args)
commands.InspectAllSST(*sstDir)
case "inspect-sst":
inspectCmd := flag.NewFlagSet("inspect-sst", flag.ExitOnError)
sstPath := inspectCmd.String("file", "./data/logs/sst/000046.sst", "SST file path")
inspectCmd.Parse(args)
commands.InspectSST(*sstPath)
case "test-fix":
testFixCmd := flag.NewFlagSet("test-fix", flag.ExitOnError)
dbPath := testFixCmd.String("db", "./data", "Database directory path")
testFixCmd.Parse(args)
commands.TestFix(*dbPath)
case "test-keys":
testKeysCmd := flag.NewFlagSet("test-keys", flag.ExitOnError)
dbPath := testKeysCmd.String("db", "./data", "Database directory path")
testKeysCmd.Parse(args)
commands.TestKeys(*dbPath)
case "help", "-h", "--help":
printUsage()
default:
fmt.Printf("Unknown command: %s\n\n", command)
printUsage()
os.Exit(1)
}
}
func printUsage() {
fmt.Println("SRDB WebUI - Database management tool")
fmt.Println("\nUsage:")
fmt.Println(" webui <command> [flags]")
fmt.Println("\nCommands:")
fmt.Println(" webui, serve Start WebUI server (default: :8080)")
fmt.Println(" check-data Check database tables and row counts")
fmt.Println(" check-seq Check specific sequence numbers")
fmt.Println(" dump-manifest Dump manifest information")
fmt.Println(" inspect-all-sst Inspect all SST files")
fmt.Println(" inspect-sst Inspect a specific SST file")
fmt.Println(" test-fix Test fix for data retrieval")
fmt.Println(" test-keys Test key existence")
fmt.Println(" help Show this help message")
fmt.Println("\nExamples:")
fmt.Println(" webui serve -db ./mydb -addr :3000")
fmt.Println(" webui check-data -db ./mydb")
fmt.Println(" webui inspect-sst -file ./data/logs/sst/000046.sst")
}