interview/render-2023-10-11/internal/thestore/store.go

35 lines
541 B
Go

package thestore
import "sync"
type Store sync.Map
func NewStore() *Store {
s := sync.Map{}
store := Store(s)
return &store
}
func (store *Store) Push(k string, op Event) {
event, ok := store.Get(k)
if ok {
event = event.Push(op)
} else {
event = op
}
store.Set(k, event)
}
func (store *Store) Set(k string, v Event) {
(*sync.Map)(store).Store(k, v)
}
func (store *Store) Get(k string) (Event, bool) {
got, ok := (*sync.Map)(store).Load(k)
if !ok {
return Event{}, false
}
event := got.(Event)
return event, true
}