working on List
This commit is contained in:
74
cli/main.go
Normal file
74
cli/main.go
Normal file
@@ -0,0 +1,74 @@
|
||||
package main
|
||||
|
||||
import (
|
||||
"bufio"
|
||||
"fmt"
|
||||
"local/args"
|
||||
"local/storage"
|
||||
"log"
|
||||
"os"
|
||||
"strings"
|
||||
"time"
|
||||
)
|
||||
|
||||
func main() {
|
||||
as := args.NewArgSet()
|
||||
as.Append(args.STRING, "addr", "addr of store", "")
|
||||
as.Append(args.STRING, "db", "type of store", "map")
|
||||
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")
|
||||
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 "get":
|
||||
b, err = db.Get(as.Get("k").GetString())
|
||||
case "set":
|
||||
err = db.Set(as.Get("k").GetString(), []byte(as.Get("v").GetString()))
|
||||
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 => %s", stop.Sub(start), err, s[1], 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: %s", stop.Sub(start), err, b)
|
||||
}
|
||||
Reference in New Issue
Block a user