ducky/subscriptions
ducky/subscriptions/memstore.go
Add an API and subscriptionsd . Create a barebones implementation of the API, including only methods to create a Subscription and retrieve the Subscription associated with a user. Also create a subscriptiond service that will bootstrap the service and stores, and get everything stood up.
| paddy@0 | 1 package subscriptions |
| paddy@0 | 2 |
| paddy@0 | 3 import ( |
| paddy@0 | 4 "sync" |
| paddy@0 | 5 ) |
| paddy@0 | 6 |
| paddy@0 | 7 // Memstore is an in-memory version of our datastores, useful |
| paddy@0 | 8 // for testing. It should not be used in production. |
| paddy@0 | 9 type Memstore struct { |
| paddy@0 | 10 subscriptions map[string]Subscription |
| paddy@0 | 11 subscriptionLock sync.RWMutex |
| paddy@0 | 12 } |
| paddy@0 | 13 |
| paddy@0 | 14 // NewMemstore returns a pointer to a Memstore object, ready |
| paddy@0 | 15 // to be used as a datastore. |
| paddy@0 | 16 func NewMemstore() *Memstore { |
| paddy@0 | 17 return &Memstore{ |
| paddy@0 | 18 subscriptions: map[string]Subscription{}, |
| paddy@0 | 19 } |
| paddy@0 | 20 } |
| paddy@0 | 21 |
| paddy@3 | 22 func (m *Memstore) Reset() error { |
| paddy@0 | 23 m.subscriptionLock.Lock() |
| paddy@0 | 24 defer m.subscriptionLock.Unlock() |
| paddy@0 | 25 |
| paddy@0 | 26 m.subscriptions = map[string]Subscription{} |
| paddy@0 | 27 return nil |
| paddy@0 | 28 } |