88 lines
2.3 KiB
Go
Executable File
88 lines
2.3 KiB
Go
Executable File
package main
|
|
|
|
import (
|
|
"bufio"
|
|
"fmt"
|
|
"gogs.inhome.blapointe.com/local/args"
|
|
"gogs.inhome.blapointe.com/local/storage"
|
|
"log"
|
|
"os"
|
|
"strings"
|
|
"time"
|
|
)
|
|
|
|
func main() {
|
|
as := args.NewArgSet()
|
|
as.Append(args.STRING, "addr", "addr of store", "localhost:8102")
|
|
as.Append(args.STRING, "db", "type of store", "dynomite")
|
|
as.Append(args.STRING, "user", "user of store", "")
|
|
as.Append(args.STRING, "pass", "pass of store", "")
|
|
as.Append(args.STRING, "do", "[get set]", "get")
|
|
as.Append(args.STRING, "k", "key", "key")
|
|
as.Append(args.STRING, "v", "value", "value")
|
|
as.Append(args.STRING, "ns", "namespace", "")
|
|
as.Append(args.STRING, "min", "min key to list", "---")
|
|
as.Append(args.STRING, "max", "max key to list", "}}}")
|
|
if err := as.Parse(); err != nil {
|
|
panic(err)
|
|
}
|
|
|
|
db, err := storage.New(
|
|
storage.TypeFromString(as.Get("db").GetString()),
|
|
as.Get("addr").GetString(),
|
|
as.Get("user").GetString(),
|
|
as.Get("pass").GetString(),
|
|
)
|
|
if err != nil {
|
|
panic(err)
|
|
}
|
|
|
|
start := time.Now()
|
|
var b []byte
|
|
switch strings.ToLower(as.Get("do").GetString()) {
|
|
case "list":
|
|
var c []string
|
|
ns := strings.Split(as.Get("ns").GetString(), " ")
|
|
c, err = db.List(ns, as.Get("min").GetString(), as.Get("max").GetString())
|
|
d := strings.Join(c, "\n\t")
|
|
b = []byte(fmt.Sprintf("%s", d))
|
|
case "get":
|
|
ns := strings.Split(as.Get("ns").GetString(), " ")
|
|
b, err = db.Get(as.Get("k").GetString(), ns...)
|
|
case "set":
|
|
ns := strings.Split(as.Get("ns").GetString(), " ")
|
|
err = db.Set(as.Get("k").GetString(), []byte(as.Get("v").GetString()), ns...)
|
|
case "cli":
|
|
reader := bufio.NewReader(os.Stdin)
|
|
for {
|
|
fmt.Print("> ")
|
|
line, err := reader.ReadString('\n')
|
|
if err != nil {
|
|
panic(err)
|
|
}
|
|
s := strings.Split(line, " ")
|
|
s[len(s)-1] = strings.TrimSpace(s[len(s)-1])
|
|
for len(s) < 3 {
|
|
s = append(s, "")
|
|
}
|
|
start := time.Now()
|
|
switch strings.ToLower(s[0]) {
|
|
case "get":
|
|
b, err := db.Get(s[1])
|
|
stop := time.Now()
|
|
log.Printf("(%v) %v: %s", stop.Sub(start), err, s[1])
|
|
fmt.Printf("%s", b)
|
|
case "set":
|
|
err := db.Set(s[1], []byte(s[2]))
|
|
stop := time.Now()
|
|
log.Printf("(%v) %v: %s", stop.Sub(start), err, s[1])
|
|
}
|
|
}
|
|
default:
|
|
log.Fatal("-do not in [get set]")
|
|
}
|
|
stop := time.Now()
|
|
log.Printf("(%v) %v: %v", stop.Sub(start), err, len(b))
|
|
fmt.Printf("%s", b)
|
|
}
|