From 139d9f2fb3d0c9eb558bc9ca95d3333ec0a4e1e2 Mon Sep 17 00:00:00 2001 From: thijsheijden <hi@thijsheijden.nl> Date: Mon, 19 Apr 2021 18:56:51 +0200 Subject: [PATCH] Added mock key value store Also changed around some of the naming. --- internal/drivers/keyvaluedriver/interface.go | 4 ++-- .../{redisdriver.go => keyvaluedriver.go} | 14 +++++------ .../keyvaluedriver/mock/mockkeyvaluedriver.go | 24 +++++++++++++++++++ 3 files changed, 33 insertions(+), 9 deletions(-) rename internal/drivers/keyvaluedriver/{redisdriver.go => keyvaluedriver.go} (74%) create mode 100644 internal/drivers/keyvaluedriver/mock/mockkeyvaluedriver.go diff --git a/internal/drivers/keyvaluedriver/interface.go b/internal/drivers/keyvaluedriver/interface.go index ad465b3..14990a9 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 c3420dd..3624612 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 0000000..52f38c4 --- /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] +} -- GitLab