package common
import (
"database/sql"
"sync"
)
var Widgets *DefaultWidgetStore
type DefaultWidgetStore struct {
widgets map[int]*Widget
sync.RWMutex
}
func NewDefaultWidgetStore() *DefaultWidgetStore {
return &DefaultWidgetStore{widgets: make(map[int]*Widget)}
func (w *DefaultWidgetStore) Get(id int) (*Widget, error) {
w.RLock()
defer w.RUnlock()
widget, ok := w.widgets[id]
if !ok {
return widget, sql.ErrNoRows
return widget, nil
func (w *DefaultWidgetStore) set(widget *Widget) {
w.Lock()
defer w.Unlock()
w.widgets[widget.ID] = widget
func (w *DefaultWidgetStore) delete(id int) {
delete(w.widgets, id)