diff --git a/core/database/database.go b/core/database/database.go index dce4e46..87e0d68 100644 --- a/core/database/database.go +++ b/core/database/database.go @@ -33,18 +33,18 @@ func (db *Database) Connect(args []string) string { defer db.lk.RUnlock() if len(args) != 2 { - return "INVALID" + return INVALID } for _, u := range db.Config.Users { if u.Name == args[0] { if u.Password == args[1] { - return "DONE" + return DONE } } } - return "INVALID" + return INVALID } func (db *Database) AddSet(args []string) string { @@ -52,12 +52,12 @@ func (db *Database) AddSet(args []string) string { defer db.lk.Unlock() if len(args) != 1 { - return "INVALID" + return INVALID } db.Sets[args[0]] = make(Set) // args[0] is set name. see: TQL docs. - return "DONE" + return DONE } func (db *Database) AddSubSet(args []string) string { @@ -65,17 +65,17 @@ func (db *Database) AddSubSet(args []string) string { defer db.lk.Unlock() if len(args) != 2 { - return "INVALID" + return INVALID } s, ok := db.Sets[args[0]] // set name args[0] if !ok { - return "SNF" + return SET_NOT_FOUND } s[args[1]] = make(SubSet, 0) // subset name args[1] - return "DONE" + return DONE } func (db *Database) PushElement(args []string) string { @@ -83,7 +83,7 @@ func (db *Database) PushElement(args []string) string { defer db.lk.Unlock() if len(args) != 4 { - return "INVALID" + return INVALID } setName := args[0] @@ -93,12 +93,12 @@ func (db *Database) PushElement(args []string) string { _, ok := db.Sets[setName][subSetName] if !ok { - return "SSNF" + return SUB_SET_NOT_FOUND } timestamp, err := strconv.ParseInt(timeStr, 10, 64) if err != nil { - return "INVALID" + return INVALID } t := time.Unix(timestamp, 0) @@ -106,7 +106,7 @@ func (db *Database) PushElement(args []string) string { db.Sets[setName][subSetName] = append(db.Sets[setName][subSetName], e) - return "DONE" + return DONE } func (db *Database) DropSet(args []string) string { @@ -114,19 +114,19 @@ func (db *Database) DropSet(args []string) string { defer db.lk.Unlock() if len(args) != 1 { - return "INVALID" + return INVALID } setName := args[0] _, ok := db.Sets[setName] if !ok { - return "SNF" + return SET_NOT_FOUND } delete(db.Sets, setName) - return "DONE" + return DONE } func (db *Database) DropSubSet(args []string) string { @@ -134,7 +134,7 @@ func (db *Database) DropSubSet(args []string) string { defer db.lk.Unlock() if len(args) != 2 { - return "INVALID" + return INVALID } setName := args[0] @@ -142,12 +142,12 @@ func (db *Database) DropSubSet(args []string) string { _, ok := db.Sets[setName][subSetName] if !ok { - return "SSNF" + return SUB_SET_NOT_FOUND } delete(db.Sets[setName], subSetName) - return "DONE" + return DONE } func (db *Database) CleanSets(_ []string) string { @@ -156,7 +156,7 @@ func (db *Database) CleanSets(_ []string) string { db.Sets = make(Sets) - return "DONE" + return DONE } func (db *Database) CleanSet(args []string) string { @@ -164,19 +164,19 @@ func (db *Database) CleanSet(args []string) string { defer db.lk.Unlock() if len(args) != 1 { - return "INVALID" + return INVALID } setName := args[0] _, ok := db.Sets[setName] if !ok { - return "SNF" + return SET_NOT_FOUND } db.Sets[setName] = make(Set) - return "DONE" + return DONE } func (db *Database) CleanSubSet(args []string) string { @@ -184,7 +184,7 @@ func (db *Database) CleanSubSet(args []string) string { defer db.lk.Unlock() if len(args) != 2 { - return "INVALID" + return INVALID } setName := args[0] @@ -192,12 +192,12 @@ func (db *Database) CleanSubSet(args []string) string { _, ok := db.Sets[setName][subSetName] if !ok { - return "SSNF" + return SUB_SET_NOT_FOUND } db.Sets[setName][subSetName] = make(SubSet, 0) - return "DONE" + return DONE } func (db *Database) CountSets(_ []string) string { @@ -217,12 +217,12 @@ func (db *Database) CountSubSets(args []string) string { defer db.lk.RUnlock() if len(args) != 1 { - return "INVALID" + return INVALID } set, ok := db.Sets[args[0]] if !ok { - return "SNF" + return SET_NOT_FOUND } i := 0 @@ -238,12 +238,12 @@ func (db *Database) CountElements(args []string) string { defer db.lk.RUnlock() if len(args) != 2 { - return "INVALID" + return INVALID } subSet, ok := db.Sets[args[0]][args[1]] if !ok { - return "SSNF" + return SUB_SET_NOT_FOUND } i := 0 @@ -259,18 +259,18 @@ func (db *Database) GetElements(args []string) string { defer db.lk.RUnlock() if len(args) < 2 { - return "INVALID" + return INVALID } subSet, ok := db.Sets[args[0]][args[1]] if !ok { - return "SSNF" + return SUB_SET_NOT_FOUND } if len(args) == 3 { n, err := strconv.Atoi(args[2]) if err != nil || len(subSet) < n { - return "INVALID" + return INVALID } lastN := subSet[len(subSet)-n:] diff --git a/core/database/database_test.go b/core/database/database_test.go index ff8246c..503ae9a 100644 --- a/core/database/database_test.go +++ b/core/database/database_test.go @@ -18,7 +18,7 @@ func TestDataBase(t *testing.T) { result := db.AddSet([]string{"testSet"}) assert.Equal(t, 1, len(db.SetsMap())) - assert.Equal(t, "DONE", result) + assert.Equal(t, DONE, result) }) t.Run("AddSubSetTest", func(t *testing.T) { @@ -26,11 +26,11 @@ func TestDataBase(t *testing.T) { result := db.AddSubSet([]string{"testSet", "testSubSet"}) assert.Equal(t, 0, len(db.SetsMap()["testSet"]["testSubSet"])) - assert.Equal(t, "DONE", result) + assert.Equal(t, DONE, result) result = db.AddSubSet([]string{"testInvalidSet", "testSubSet"}) - assert.Equal(t, "SNF", result) + assert.Equal(t, SET_NOT_FOUND, result) }) t.Run("pushElementTest", func(t *testing.T) { @@ -40,7 +40,7 @@ func TestDataBase(t *testing.T) { timeStr := fmt.Sprintf("%d", time.Now().Unix()) result := db.PushElement([]string{"testSet", "testSubSet", "testValue", timeStr}) - assert.Equal(t, "DONE", result) + assert.Equal(t, DONE, result) assert.Equal(t, 1, len(db.SetsMap()["testSet"]["testSubSet"])) assert.Equal(t, "testValue", db.SetsMap()["testSet"]["testSubSet"][0].value) @@ -49,7 +49,7 @@ func TestDataBase(t *testing.T) { result = db.PushElement([]string{"invalidTestSet", "invalidTestSubSet", "testValue", timeStr}) - assert.Equal(t, "SSNF", result) + assert.Equal(t, SUB_SET_NOT_FOUND, result) assert.Equal(t, 1, len(db.SetsMap()["testSet"]["testSubSet"])) assert.Equal(t, "testValue", db.SetsMap()["testSet"]["testSubSet"][0].value) @@ -65,11 +65,11 @@ func TestDataBase(t *testing.T) { result := db.DropSet([]string{"testSet"}) assert.Equal(t, 2, len(db.SetsMap())) - assert.Equal(t, "DONE", result) + assert.Equal(t, DONE, result) result = db.DropSet([]string{"inavlidTestSet"}) - assert.Equal(t, "SNF", result) + assert.Equal(t, SET_NOT_FOUND, result) assert.Equal(t, 2, len(db.SetsMap())) }) @@ -82,13 +82,13 @@ func TestDataBase(t *testing.T) { result := db.DropSubSet([]string{"testSet", "subSetOne"}) - assert.Equal(t, "DONE", result) + assert.Equal(t, DONE, result) assert.Equal(t, 1, len(db.SetsMap()["testSet"])) assert.Nil(t, db.SetsMap()["testSet"]["subSetOne"]) result = db.DropSubSet([]string{"secondTestSet", "subSetOne"}) - assert.Equal(t, "SSNF", result) + assert.Equal(t, SUB_SET_NOT_FOUND, result) }) t.Run("cleanTest", func(t *testing.T) { @@ -111,24 +111,24 @@ func TestDataBase(t *testing.T) { result := db.CleanSubSet([]string{"secondTestSet", "subSetTwo"}) - assert.Equal(t, "DONE", result) + assert.Equal(t, DONE, result) assert.Equal(t, 0, len(db.SetsMap()["secondTestSet"]["subSetTwo"])) result = db.CleanSet([]string{"testSet"}) - assert.Equal(t, "DONE", result) + assert.Equal(t, DONE, result) assert.Equal(t, 0, len(db.SetsMap()["testSet"])) result = db.CleanSets([]string{}) - assert.Equal(t, "DONE", result) + assert.Equal(t, DONE, result) assert.Equal(t, 0, len(db.SetsMap())) result = db.CleanSet([]string{"invalidSet"}) - assert.Equal(t, "SNF", result) + assert.Equal(t, SET_NOT_FOUND, result) result = db.CleanSubSet([]string{"invalidSet", "invalidSubSet"}) - assert.Equal(t, "SSNF", result) + assert.Equal(t, SUB_SET_NOT_FOUND, result) }) t.Run("countTest", func(t *testing.T) { @@ -176,8 +176,8 @@ func TestDataBase(t *testing.T) { fmt.Print(trimmedResult) resultsArray := strings.Split(trimmedResult, " ") - assert.NotEqual(t, "INVALID", result) - assert.NotEqual(t, "SSNF", result) + assert.NotEqual(t, INVALID, result) + assert.NotEqual(t, SUB_SET_NOT_FOUND, result) assert.Equal(t, 50, len(resultsArray)) result = db.GetElements([]string{"testSet", "subSetOne", "10"}) @@ -186,8 +186,8 @@ func TestDataBase(t *testing.T) { trimmedResult, _ = strings.CutPrefix(trimmedResult, " ") resultsArray = strings.Split(trimmedResult, " ") - assert.NotEqual(t, "INVALID", result) - assert.NotEqual(t, "SSNF", result) + assert.NotEqual(t, INVALID, result) + assert.NotEqual(t, SUB_SET_NOT_FOUND, result) assert.Equal(t, 10, len(resultsArray)) }) } diff --git a/core/database/types.go b/core/database/types.go index 80c2fbc..57e04e0 100644 --- a/core/database/types.go +++ b/core/database/types.go @@ -6,6 +6,14 @@ import ( "time" ) +const ( + INVALID = "INVALID" + DONE = "DONE" + SET_NOT_FOUND = "SNF" + SUB_SET_NOT_FOUND = "SSNF" + ELEMENT_NOT_FOUND = "ENF" +) + type Element struct { value string // currently ttrace only supports string datatype for value. time time.Time // will return and input from user as unix timestamp.