| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253 |
- package clusters
- // MapDBClusterStorage is a map implementation of a database used to store cluster definitions
- type MapDBClusterStorage struct {
- store map[string][]byte
- }
- // NewMapDBClusterStorage creates a new map backed ClusterStorage implementation
- func NewMapDBClusterStorage() ClusterStorage {
- return &MapDBClusterStorage{
- store: make(map[string][]byte),
- }
- }
- // AddIfNotExists Adds the entry if the key does not exist
- func (cs *MapDBClusterStorage) AddIfNotExists(key string, cluster []byte) error {
- if _, ok := cs.store[key]; !ok {
- cs.store[key] = cluster
- }
- return nil
- }
- // AddOrUpdate Adds the encoded cluster to storage if it doesn't exist. Otherwise, update the existing
- // value with the provided.
- func (cs *MapDBClusterStorage) AddOrUpdate(key string, cluster []byte) error {
- cs.store[key] = cluster
- return nil
- }
- // Remove Removes a key from the cluster storage
- func (cs *MapDBClusterStorage) Remove(key string) error {
- delete(cs.store, key)
- return nil
- }
- // Each Iterates through all key/values for the storage and calls the handler func. If a handler returns
- // an error, the iteration stops.
- func (cs *MapDBClusterStorage) Each(handler func(string, []byte) error) error {
- for k, v := range cs.store {
- value := make([]byte, len(v))
- copy(value, v)
- if err := handler(k, value); err != nil {
- return err
- }
- }
- return nil
- }
- // Close Closes the backing storage
- func (cs *MapDBClusterStorage) Close() error {
- return nil
- }
|