Merge "RIC:1060: Change in PTL"
[ric-plt/sdlgo.git] / internal / cli / types.go
index 448515c..4b50964 100644 (file)
 
 package cli
 
-import "gerrit.o-ran-sc.org/r/ric-plt/sdlgo/internal/sdlgoredis"
+import (
+       "fmt"
+       "gerrit.o-ran-sc.org/r/ric-plt/sdlgo/internal/sdlgoredis"
+       "strings"
+)
 
 //iDatabase is an interface towards database backend, for the time being
 //sdlgoredis.DB implements this interface.
 type iDatabase interface {
        Info() (*sdlgoredis.DbInfo, error)
        State() (*sdlgoredis.DbState, error)
+       Keys(pattern string) ([]string, error)
+       Statistics() (*sdlgoredis.DbStatistics, error)
 }
 
 //Database struct is a holder for the internal database instances.
@@ -41,8 +47,10 @@ type DbCreateCb func() *Database
 
 //iSyncStorage is an interface towards SDL SyncStorage API
 type ISyncStorage interface {
+       Get(ns string, keys []string) (map[string]interface{}, error)
        ListKeys(ns string, pattern string) ([]string, error)
        Set(ns string, pairs ...interface{}) error
+       Remove(ns string, keys []string) error
 }
 
 //SyncStorageCreateCb callback function type to create a new SyncStorageInterface
@@ -54,13 +62,27 @@ type keysArgs struct {
        pattern string
 }
 
-//newKeysArgs constructs a new keysArgs struct.
-func newKeysArgs(ns string, pattern string) keysArgs {
+//NewKeysArgs constructs a new keysArgs struct.
+func NewKeysArgs(ns string, pattern string) keysArgs {
        return keysArgs{
                ns:      ns,
                pattern: pattern,
        }
 }
 
+//Validate command arguments in keysArgs.
+func (k keysArgs) Validate() error {
+       if strings.Contains(k.ns, "*") {
+               return fmt.Errorf("Invalid character (*) in given %s namespace argument.", k.ns)
+       }
+       return nil
+}
+
+//nsMap is a map having SDL DB cluster address as a key and namespace map of type nsKeyMap as a value
+type nsMap map[string]nsKeyMap
+
+//nsKeyMap is a map having namespace as a key and DB key count as a value
+type nsKeyMap map[string]uint32
+
 //SdlCliApp constant defines the name of the SDL CLI application
 const SdlCliApp = "sdlcli"