flamingo.me/flamingo-commerce/v3@v3.11.0/checkout/infrastructure/contextstore/memory.go (about) 1 package contextstore 2 3 import ( 4 "context" 5 "sync" 6 7 "flamingo.me/flamingo-commerce/v3/checkout/domain/placeorder/process" 8 ) 9 10 type ( 11 // Memory saves all contexts in a simple map 12 Memory struct { 13 mx sync.RWMutex 14 storage map[string]process.Context 15 } 16 ) 17 18 var _ process.ContextStore = new(Memory) 19 20 // Inject dependencies 21 func (m *Memory) Inject() *Memory { 22 m.storage = make(map[string]process.Context) 23 24 return m 25 } 26 27 // Store a given context 28 func (m *Memory) Store(_ context.Context, key string, value process.Context) error { 29 m.mx.Lock() 30 defer m.mx.Unlock() 31 m.storage[key] = value 32 33 return nil 34 } 35 36 // Get a stored context 37 func (m *Memory) Get(_ context.Context, key string) (process.Context, bool) { 38 m.mx.RLock() 39 defer m.mx.RUnlock() 40 value, ok := m.storage[key] 41 42 return value, ok 43 } 44 45 // Delete a stored context, nop if it doesn't exist 46 func (m *Memory) Delete(_ context.Context, key string) error { 47 m.mx.Lock() 48 defer m.mx.Unlock() 49 delete(m.storage, key) 50 51 return nil 52 }