initial working version
This commit is contained in:
parent
dd296f3aff
commit
1b2edc1679
4 changed files with 195 additions and 1 deletions
|
@ -1,3 +1,3 @@
|
||||||
# zordfsdb-client
|
# zordfsdb-client
|
||||||
|
|
||||||
Client for zordfsdb database
|
Client for zordfsdb database.
|
||||||
|
|
7
go.mod
Normal file
7
go.mod
Normal file
|
@ -0,0 +1,7 @@
|
||||||
|
module g.arns.lt/zordsdavini/zordfsdb-client
|
||||||
|
|
||||||
|
go 1.23.0
|
||||||
|
|
||||||
|
require g.arns.lt/zordsdavini/zordfsdb v1.0.1
|
||||||
|
|
||||||
|
require g.arns.lt/zordsdavini/abcex v1.0.1 // indirect
|
10
go.sum
Normal file
10
go.sum
Normal file
|
@ -0,0 +1,10 @@
|
||||||
|
g.arns.lt/zordsdavini/abcex v1.0.1 h1:ZN/xSDQb8CiR9+jXHYp+tUtGILMeRu9PvvqhypZDkyI=
|
||||||
|
g.arns.lt/zordsdavini/abcex v1.0.1/go.mod h1:YRcJgts3XZwI+LEkngpfUab3DkUAW387Irpr43hIym8=
|
||||||
|
g.arns.lt/zordsdavini/zordfsdb v1.0.1 h1:XM/5qR2PsGBFUwT9GrCbiPEUySoZHKP6yeRcRDCO3no=
|
||||||
|
g.arns.lt/zordsdavini/zordfsdb v1.0.1/go.mod h1:gq30YNjz3yIMdI4cA5e5mK90V4Yns5NAsbwi6s8Bf3Q=
|
||||||
|
github.com/otiai10/copy v1.14.0 h1:dCI/t1iTdYGtkvCuBG2BgR6KZa83PTclw4U5n2wAllU=
|
||||||
|
github.com/otiai10/copy v1.14.0/go.mod h1:ECfuL02W+/FkTWZWgQqXPWZgW9oeKCSQ5qVfSc4qc4w=
|
||||||
|
golang.org/x/sync v0.3.0 h1:ftCYgMx6zT/asHUrPw8BLLscYtGznsLAnjq5RH9P66E=
|
||||||
|
golang.org/x/sync v0.3.0/go.mod h1:FU7BRWz2tNW+3quACPkgCx/L+uEAv1htQ0V83Z9Rj+Y=
|
||||||
|
golang.org/x/sys v0.0.0-20220715151400-c0bba94af5f8 h1:0A+M6Uqn+Eje4kHMK80dtF3JCXC4ykBgQG4Fe06QRhQ=
|
||||||
|
golang.org/x/sys v0.0.0-20220715151400-c0bba94af5f8/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
177
main.go
Normal file
177
main.go
Normal file
|
@ -0,0 +1,177 @@
|
||||||
|
package main
|
||||||
|
|
||||||
|
import (
|
||||||
|
"bufio"
|
||||||
|
"flag"
|
||||||
|
"fmt"
|
||||||
|
"os"
|
||||||
|
"strings"
|
||||||
|
|
||||||
|
"g.arns.lt/zordsdavini/zordfsdb"
|
||||||
|
)
|
||||||
|
|
||||||
|
var (
|
||||||
|
rootDir string
|
||||||
|
executeCommand string
|
||||||
|
)
|
||||||
|
|
||||||
|
func main() {
|
||||||
|
flag.StringVar(&rootDir, "d", "./", "database root directory")
|
||||||
|
flag.StringVar(&executeCommand, "e", "", "execute command")
|
||||||
|
|
||||||
|
flag.Parse()
|
||||||
|
|
||||||
|
db, err := zordfsdb.InitDB(rootDir)
|
||||||
|
if err != nil {
|
||||||
|
panic(err)
|
||||||
|
}
|
||||||
|
|
||||||
|
if len(executeCommand) > 0 {
|
||||||
|
ExecuteCommand(db, executeCommand)
|
||||||
|
} else {
|
||||||
|
reader := bufio.NewReader(os.Stdin)
|
||||||
|
fmt.Println("ZordFsDB Shell")
|
||||||
|
fmt.Println("---------------------")
|
||||||
|
|
||||||
|
for {
|
||||||
|
fmt.Print("> ")
|
||||||
|
text, _ := reader.ReadString('\n')
|
||||||
|
// convert CRLF to LF
|
||||||
|
text = strings.Replace(text, "\n", "", -1)
|
||||||
|
|
||||||
|
if strings.Compare("exit", strings.ToLower(text)) == 0 {
|
||||||
|
fmt.Println("BYE :)")
|
||||||
|
break
|
||||||
|
}
|
||||||
|
|
||||||
|
ExecuteCommand(db, text)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func ExecuteCommand(db zordfsdb.DB, commands string) error {
|
||||||
|
for _, command := range strings.Split(commands, ";") {
|
||||||
|
command = strings.Trim(command, " ")
|
||||||
|
parts := strings.Split(command, " ")
|
||||||
|
|
||||||
|
switch strings.ToLower(parts[0]) {
|
||||||
|
case "keys":
|
||||||
|
if len(parts) == 1 || len(parts[1]) == 0 {
|
||||||
|
return fmt.Errorf("err format: KEYS [path]")
|
||||||
|
}
|
||||||
|
|
||||||
|
fmt.Printf("{%s} KEYS: ", parts[1])
|
||||||
|
fmt.Println(db.Keys(parts[1]))
|
||||||
|
break
|
||||||
|
|
||||||
|
case "get":
|
||||||
|
if len(parts) == 1 || len(parts[1]) == 0 {
|
||||||
|
return fmt.Errorf("err format: GET [path]")
|
||||||
|
}
|
||||||
|
|
||||||
|
value, ok := db.Get(parts[1])
|
||||||
|
if !ok {
|
||||||
|
fmt.Println("No value found.")
|
||||||
|
} else {
|
||||||
|
fmt.Printf("{%s} VALUE: ", parts[1])
|
||||||
|
fmt.Println(value)
|
||||||
|
}
|
||||||
|
break
|
||||||
|
|
||||||
|
case "inc":
|
||||||
|
if len(parts) == 1 || len(parts[1]) == 0 {
|
||||||
|
return fmt.Errorf("err format: INC [path]")
|
||||||
|
}
|
||||||
|
|
||||||
|
ok := db.Inc(parts[1])
|
||||||
|
if !ok {
|
||||||
|
fmt.Println("No value found.")
|
||||||
|
} else {
|
||||||
|
fmt.Printf("{%s} INC OK\n", parts[1])
|
||||||
|
}
|
||||||
|
break
|
||||||
|
|
||||||
|
case "dec":
|
||||||
|
if len(parts) == 1 || len(parts[1]) == 0 {
|
||||||
|
return fmt.Errorf("err format: DEC [path]")
|
||||||
|
}
|
||||||
|
|
||||||
|
ok := db.Dec(parts[1])
|
||||||
|
if !ok {
|
||||||
|
fmt.Println("No value found.")
|
||||||
|
} else {
|
||||||
|
fmt.Printf("{%s} DEC OK\n", parts[1])
|
||||||
|
}
|
||||||
|
break
|
||||||
|
|
||||||
|
case "now":
|
||||||
|
if len(parts) == 1 || len(parts[1]) == 0 {
|
||||||
|
return fmt.Errorf("err format: NOW [path]")
|
||||||
|
}
|
||||||
|
|
||||||
|
ok := db.Now(parts[1])
|
||||||
|
if !ok {
|
||||||
|
fmt.Println("No value found.")
|
||||||
|
} else {
|
||||||
|
fmt.Printf("{%s} NOW OK\n", parts[1])
|
||||||
|
}
|
||||||
|
break
|
||||||
|
|
||||||
|
case "del":
|
||||||
|
if len(parts) == 1 || len(parts[1]) == 0 {
|
||||||
|
return fmt.Errorf("err format: DEL [path]")
|
||||||
|
}
|
||||||
|
|
||||||
|
ok := db.Del(parts[1])
|
||||||
|
if !ok {
|
||||||
|
fmt.Println("No value/object found.")
|
||||||
|
} else {
|
||||||
|
fmt.Printf("{%s} DELETED\n", parts[1])
|
||||||
|
}
|
||||||
|
break
|
||||||
|
|
||||||
|
case "save":
|
||||||
|
if len(parts) < 3 || len(parts[1]) == 0 {
|
||||||
|
return fmt.Errorf("err format: SAVE [path] [value|long value]")
|
||||||
|
}
|
||||||
|
|
||||||
|
value := strings.Trim(strings.Join(parts[2:], " "), "\"")
|
||||||
|
|
||||||
|
ok := db.Save(parts[1], value)
|
||||||
|
if !ok {
|
||||||
|
fmt.Println("No value found.")
|
||||||
|
} else {
|
||||||
|
fmt.Printf("{%s} SAVED\n", parts[1])
|
||||||
|
}
|
||||||
|
break
|
||||||
|
|
||||||
|
case "create":
|
||||||
|
if len(parts) == 1 || len(parts[1]) == 0 {
|
||||||
|
return fmt.Errorf("err format: CREATE [path]")
|
||||||
|
}
|
||||||
|
|
||||||
|
ok := db.CreateNode(parts[1])
|
||||||
|
if !ok {
|
||||||
|
fmt.Println("No path found.")
|
||||||
|
} else {
|
||||||
|
fmt.Printf("{%s} CREATED\n", parts[1])
|
||||||
|
}
|
||||||
|
break
|
||||||
|
|
||||||
|
case "add":
|
||||||
|
if len(parts) == 1 || len(parts[1]) == 0 {
|
||||||
|
return fmt.Errorf("err format: ADD [path]")
|
||||||
|
}
|
||||||
|
|
||||||
|
id, err := db.AddObject(parts[1])
|
||||||
|
if err != nil {
|
||||||
|
fmt.Println("No path found.")
|
||||||
|
} else {
|
||||||
|
fmt.Printf("{%s} ADDED with ID: %s\n", parts[1], id)
|
||||||
|
}
|
||||||
|
break
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return nil
|
||||||
|
}
|
Loading…
Reference in a new issue