From f977919ea01622027b6981f16de4bff065347327 Mon Sep 17 00:00:00 2001 From: Kay Date: Tue, 9 Jul 2024 18:14:40 +0330 Subject: [PATCH] chore: enhancement (#116) --- cmd/commands/ping.go | 2 +- cmd/commands/repl.go | 4 +-- cmd/commands/run.go | 6 ++--- cmd/commands/util.go | 2 +- cmd/main.go | 2 +- core/TQL/execute/execute.go | 2 +- core/TQL/parser/parser_test.go | 27 ++++++++++++------- doc/TQL/TQL.md | 13 +++++++++ .../data-structure.md} | 0 go.mod | 6 ++--- go.sum | 4 +++ 11 files changed, 47 insertions(+), 21 deletions(-) rename doc/{model/model.md => data-structure/data-structure.md} (100%) diff --git a/cmd/commands/ping.go b/cmd/commands/ping.go index 5116902..8c9522b 100644 --- a/cmd/commands/ping.go +++ b/cmd/commands/ping.go @@ -22,7 +22,7 @@ func PingCommand(parentCmd *cobra.Command) { ping.Run = func(cmd *cobra.Command, args []string) { conn, err := net.Dial("tcp", *address) if err != nil { - Dead(cmd, err) + ExitOnError(cmd, err) } defer conn.Close() diff --git a/cmd/commands/repl.go b/cmd/commands/repl.go index 767e478..0431b4d 100644 --- a/cmd/commands/repl.go +++ b/cmd/commands/repl.go @@ -28,7 +28,7 @@ func REPLCommand(parentCmd *cobra.Command) { connect.Run = func(cmd *cobra.Command, args []string) { conn, err := net.Dial("tcp", *address) if err != nil { - Dead(cmd, err) + ExitOnError(cmd, err) } defer conn.Close() @@ -51,7 +51,7 @@ func REPLCommand(parentCmd *cobra.Command) { cmd.Print(do(conn, input)) } } else { - Dead(cmd, fmt.Errorf("%w: %s", errors.ErrInvalidCommand, response)) + ExitOnError(cmd, fmt.Errorf("%w: %s", errors.ErrInvalidCommand, response)) } } } diff --git a/cmd/commands/run.go b/cmd/commands/run.go index b9cc659..d0ce974 100644 --- a/cmd/commands/run.go +++ b/cmd/commands/run.go @@ -20,12 +20,12 @@ func RunCommand(parentCmd *cobra.Command) { run.Run = func(cmd *cobra.Command, args []string) { if confingPath == nil || *confingPath == "" { - Dead(cmd, tte.ErrInavlidConfigPath) + ExitOnError(cmd, tte.ErrInavlidConfigPath) } cfg, err := config.LoadFromFile(*confingPath) if err != nil { - Dead(cmd, err) + ExitOnError(cmd, err) } db := database.Init(cfg) @@ -33,7 +33,7 @@ func RunCommand(parentCmd *cobra.Command) { server := server.NewServer(cfg, db) if err := server.Start(); err != nil { - Dead(cmd, err) + ExitOnError(cmd, err) } } } diff --git a/cmd/commands/util.go b/cmd/commands/util.go index e6996f1..2f2ec1a 100644 --- a/cmd/commands/util.go +++ b/cmd/commands/util.go @@ -6,7 +6,7 @@ import ( "github.com/spf13/cobra" ) -func Dead(cmd *cobra.Command, err error) { +func ExitOnError(cmd *cobra.Command, err error) { cmd.PrintErrln(err) os.Exit(1) } diff --git a/cmd/main.go b/cmd/main.go index f350959..323f881 100644 --- a/cmd/main.go +++ b/cmd/main.go @@ -18,6 +18,6 @@ func main() { err := rootCmd.Execute() if err != nil { - commands.Dead(rootCmd, err) + commands.ExitOnError(rootCmd, err) } } diff --git a/core/TQL/execute/execute.go b/core/TQL/execute/execute.go index 69592ec..4479a84 100644 --- a/core/TQL/execute/execute.go +++ b/core/TQL/execute/execute.go @@ -26,7 +26,7 @@ var Executors ExecutorMap = ExecutorMap{ func Execute(q database.Query, db database.IDataBase) string { execute, ok := Executors[q.Command] if !ok { - return "INVALID" + return database.INVALID } result := execute(db, q.Args) diff --git a/core/TQL/parser/parser_test.go b/core/TQL/parser/parser_test.go index ae56f66..1dd7145 100644 --- a/core/TQL/parser/parser_test.go +++ b/core/TQL/parser/parser_test.go @@ -1,18 +1,27 @@ package core import ( - "testing" - "github.com/stretchr/testify/assert" + "testing" ) func TestParseQuery(t *testing.T) { - query := "PUSH testSet testSubSet hello 1700842078" - paredQuery := ParseQuery(query) + t.Run("good query", func(t *testing.T) { + query := "PUSH testSet testSubSet hello 1700842078" + paredQuery := ParseQuery(query) + + assert.Equal(t, paredQuery.Command, "PUSH") + assert.Equal(t, paredQuery.Args[0], "testSet") + assert.Equal(t, paredQuery.Args[1], "testSubSet") + assert.Equal(t, paredQuery.Args[2], "hello") + assert.Equal(t, paredQuery.Args[3], "1700842078") + }) + + t.Run("empty query", func(t *testing.T) { + query := "" + paredQuery := ParseQuery(query) - assert.Equal(t, paredQuery.Command, "PUSH") - assert.Equal(t, paredQuery.Args[0], "testSet") - assert.Equal(t, paredQuery.Args[1], "testSubSet") - assert.Equal(t, paredQuery.Args[2], "hello") - assert.Equal(t, paredQuery.Args[3], "1700842078") + assert.Equal(t, "", paredQuery.Command) + assert.Equal(t, 0, len(paredQuery.Args)) + }) } diff --git a/doc/TQL/TQL.md b/doc/TQL/TQL.md index 3951572..e79ca73 100644 --- a/doc/TQL/TQL.md +++ b/doc/TQL/TQL.md @@ -36,3 +36,16 @@ Time trace is using a query language called TQL. Here is documentation and speci | SSNF | subset is not found | | ENF | element(s) is not found | | [DATA separated by space] (key-time key-time key-time) | GET successful response | + + +# Example + +Here is a set of examples to understand TQL and idea behind it: + +E1: +``` +SET myset +SSET myset mysset +PUSH myset mysset hello 123456789 +GET myset mysset 1 +``` diff --git a/doc/model/model.md b/doc/data-structure/data-structure.md similarity index 100% rename from doc/model/model.md rename to doc/data-structure/data-structure.md diff --git a/go.mod b/go.mod index 6193ac0..8dbfdba 100644 --- a/go.mod +++ b/go.mod @@ -1,11 +1,11 @@ module github.com/zurvan-lab/TimeTrace -go 1.21.1 +go 1.22.2 require ( - github.com/rs/zerolog v1.31.0 + github.com/rs/zerolog v1.32.0 github.com/spf13/cobra v1.8.0 - github.com/stretchr/testify v1.8.4 + github.com/stretchr/testify v1.9.0 gopkg.in/yaml.v2 v2.4.0 ) diff --git a/go.sum b/go.sum index 207f1be..019a500 100644 --- a/go.sum +++ b/go.sum @@ -17,6 +17,8 @@ github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZN github.com/rs/xid v1.5.0/go.mod h1:trrq9SKmegXys3aeAKXMUTdJsYXVwGY3RLcfgqegfbg= github.com/rs/zerolog v1.31.0 h1:FcTR3NnLWW+NnTwwhFWiJSZr4ECLpqCm6QsEnyvbV4A= github.com/rs/zerolog v1.31.0/go.mod h1:/7mN4D5sKwJLZQ2b/znpjC3/GQWY/xaDXUM0kKWRHss= +github.com/rs/zerolog v1.32.0 h1:keLypqrlIjaFsbmJOBdB/qvyF8KEtCWHwobLp5l/mQ0= +github.com/rs/zerolog v1.32.0/go.mod h1:/7mN4D5sKwJLZQ2b/znpjC3/GQWY/xaDXUM0kKWRHss= github.com/russross/blackfriday/v2 v2.1.0/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= github.com/spf13/cobra v1.8.0 h1:7aJaZx1B85qltLMc546zn58BxxfZdR/W22ej9CFoEf0= github.com/spf13/cobra v1.8.0/go.mod h1:WXLWApfZ71AjXPya3WOlMsY9yMs7YeiHhFVlvLyhcho= @@ -24,6 +26,8 @@ github.com/spf13/pflag v1.0.5 h1:iy+VFUOCP1a+8yFto/drg2CJ5u0yRoB7fZw3DKv/JXA= github.com/spf13/pflag v1.0.5/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= github.com/stretchr/testify v1.8.4 h1:CcVxjf3Q8PM0mHUKJCdn+eZZtm5yQwehR5yeSVQQcUk= github.com/stretchr/testify v1.8.4/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo= +github.com/stretchr/testify v1.9.0 h1:HtqpIVDClZ4nwg75+f6Lvsy/wHu+3BoSGCbBAcpTsTg= +github.com/stretchr/testify v1.9.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY= golang.org/x/sys v0.0.0-20220811171246-fbc7d0a398ab/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.12.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=