diff --git a/internal/drivers/keyvaluedriver/interface.go b/internal/drivers/keyvaluedriver/interface.go index ad465b3f7f4212470076b09d9edaa38edab9892d..14990a942204930602523676522502d6d412208b 100644 --- a/internal/drivers/keyvaluedriver/interface.go +++ b/internal/drivers/keyvaluedriver/interface.go @@ -1,7 +1,7 @@ package keyvaluedriver -// KeyValueStore is an interface for a key value storage -type KeyValueStore interface { +// KeyValueStoreInterface is an interface for a key value storage +type KeyValueStoreInterface interface { Get(key *string) *string Set(key *string, value interface{}) error } diff --git a/internal/drivers/keyvaluedriver/redisdriver.go b/internal/drivers/keyvaluedriver/keyvaluedriver.go similarity index 74% rename from internal/drivers/keyvaluedriver/redisdriver.go rename to internal/drivers/keyvaluedriver/keyvaluedriver.go index c3420dd52d3196bdced96d97e8de3d30dccfd028..3624612d8bb00a002c6d989e3a00da64fdab66f1 100644 --- a/internal/drivers/keyvaluedriver/redisdriver.go +++ b/internal/drivers/keyvaluedriver/keyvaluedriver.go @@ -9,18 +9,18 @@ import ( "github.com/go-redis/redis/v8" ) -// RedisDriver models the redis driver -type RedisDriver struct { +// KeyValueDriver models the redis driver +type KeyValueDriver struct { client *redis.Client } // NewRedisDriver creates and returns a redis driver -func NewRedisDriver() *RedisDriver { - return &RedisDriver{} +func NewRedisDriver() *KeyValueDriver { + return &KeyValueDriver{} } // Start starts the redis driver -func (d *RedisDriver) Start() { +func (d *KeyValueDriver) Start() { // Grab the redis host and port from environment vars redisAddress := os.Getenv("REDIS_ADDRESS") // redisPassword := os.Getenv("REDIS_PASSWORD") @@ -35,13 +35,13 @@ func (d *RedisDriver) Start() { } // Get retrieves the value from the redis store that belongs to the given key -func (d *RedisDriver) Get(key *string) *string { +func (d *KeyValueDriver) Get(key *string) *string { value := d.client.Get(context.Background(), *key).Val() return &value } // Set sets the key value pair in the redis store -func (d *RedisDriver) Set(key *string, value interface{}) error { +func (d *KeyValueDriver) Set(key *string, value interface{}) error { status := d.client.Set(context.Background(), *key, value, 0) return status.Err() } diff --git a/internal/drivers/keyvaluedriver/mock/mockkeyvaluedriver.go b/internal/drivers/keyvaluedriver/mock/mockkeyvaluedriver.go new file mode 100644 index 0000000000000000000000000000000000000000..52f38c4703e803c71d62d5315516022fd789d4e3 --- /dev/null +++ b/internal/drivers/keyvaluedriver/mock/mockkeyvaluedriver.go @@ -0,0 +1,24 @@ +package mockkeyvaluedriver + +// A KeyValueStore implements methods to set key-value data (mock) +type KeyValueStore struct { + data map[string]interface{} +} + +// CreateKeyValueStore creates a key value store driver (mock) +func CreateKeyValueStore() *KeyValueStore { + return &KeyValueStore{ + data: make(map[string]interface{}), + } +} + +// Set sets a key to a value in the key value store. Expects a non-pointer as value. (mock) +func (kvs *KeyValueStore) Set(key *string, value interface{}) error { + kvs.data[*key] = value + return nil +} + +// Get gets the value for the supplied key from the key value store (mock) +func (kvs *KeyValueStore) Get(key *string) interface{} { + return kvs.data[*key] +}