ducky/devices
2015-11-12
Child:408abf6e48d3
ducky/devices/memstore.go
Minimal Memstore implementation. Create an in-memory version of the Storer that meets the minimal requirements set by our Storer tests so far.
| paddy@4 | 1 package devices |
| paddy@4 | 2 |
| paddy@4 | 3 import ( |
| paddy@4 | 4 "sync" |
| paddy@4 | 5 |
| paddy@4 | 6 "code.secondbit.org/uuid.hg" |
| paddy@4 | 7 "golang.org/x/net/context" |
| paddy@4 | 8 ) |
| paddy@4 | 9 |
| paddy@4 | 10 type Memstore struct { |
| paddy@4 | 11 devices map[string]Device |
| paddy@4 | 12 lock sync.RWMutex |
| paddy@4 | 13 } |
| paddy@4 | 14 |
| paddy@4 | 15 func NewMemstore() *Memstore { |
| paddy@4 | 16 return &Memstore{ |
| paddy@4 | 17 devices: map[string]Device{}, |
| paddy@4 | 18 } |
| paddy@4 | 19 } |
| paddy@4 | 20 |
| paddy@4 | 21 func (m *Memstore) GetDevices(ids []uuid.ID, c context.Context) (map[string]Device, error) { |
| paddy@4 | 22 m.lock.RLock() |
| paddy@4 | 23 defer m.lock.RUnlock() |
| paddy@4 | 24 |
| paddy@4 | 25 results := map[string]Device{} |
| paddy@4 | 26 |
| paddy@4 | 27 for _, id := range ids { |
| paddy@4 | 28 device, ok := m.devices[id.String()] |
| paddy@4 | 29 if !ok { |
| paddy@4 | 30 continue |
| paddy@4 | 31 } |
| paddy@4 | 32 results[id.String()] = device |
| paddy@4 | 33 } |
| paddy@4 | 34 return results, nil |
| paddy@4 | 35 } |
| paddy@4 | 36 |
| paddy@4 | 37 func (m *Memstore) UpdateDevice(change DeviceChange, c context.Context) error { |
| paddy@4 | 38 return nil |
| paddy@4 | 39 } |
| paddy@4 | 40 |
| paddy@4 | 41 func (m *Memstore) DeleteDevices(id []uuid.ID, c context.Context) error { |
| paddy@4 | 42 return nil |
| paddy@4 | 43 } |
| paddy@4 | 44 |
| paddy@4 | 45 func (m *Memstore) CreateDevices(devices []Device, c context.Context) error { |
| paddy@4 | 46 m.lock.Lock() |
| paddy@4 | 47 defer m.lock.Unlock() |
| paddy@4 | 48 |
| paddy@4 | 49 for _, device := range devices { |
| paddy@4 | 50 m.devices[device.ID.String()] = device |
| paddy@4 | 51 } |
| paddy@4 | 52 return nil |
| paddy@4 | 53 } |
| paddy@4 | 54 |
| paddy@4 | 55 func (m *Memstore) ListDevicesByOwner(user uuid.ID, c context.Context) ([]Device, error) { |
| paddy@4 | 56 return []Device{}, nil |
| paddy@4 | 57 } |
| paddy@4 | 58 |
| paddy@4 | 59 func (m *Memstore) Factory(c context.Context) (Storer, error) { |
| paddy@4 | 60 return NewMemstore(), nil |
| paddy@4 | 61 } |
| paddy@4 | 62 |
| paddy@4 | 63 func (m *Memstore) Destroy(c context.Context) error { |
| paddy@4 | 64 m.devices = nil |
| paddy@4 | 65 return nil |
| paddy@4 | 66 } |