package common

import "sync"

type DefaultMenuItemStore struct {
	items    map[int]MenuItem
	itemLock sync.RWMutex
}

func NewDefaultMenuItemStore() *DefaultMenuItemStore {
	return &DefaultMenuItemStore{
		items: make(map[int]MenuItem),
	}
}

func (store *DefaultMenuItemStore) Add(item MenuItem) {
	store.itemLock.Lock()
	defer store.itemLock.Unlock()
	store.items[item.ID] = item
}

func (store *DefaultMenuItemStore) Get(id int) (MenuItem, error) {
	store.itemLock.RLock()
	item, ok := store.items[id]
	store.itemLock.RUnlock()
	if ok {
		return item, nil
	}
	return item, ErrNoRows
}