package store import ( "errors" "fmt" "codeberg.org/danjones000/combluotion/config" ) var ErrNoFactory = errors.New("unknown factory") type StoreFactory func(config.Config) (Store, error) var factories map[string]StoreFactory func init() { factories = make(map[string]StoreFactory) } func AddFactory(name string, f StoreFactory) { factories[name] = f } func GetFactory(name string) StoreFactory { return factories[name] } func MakeStore(name string, conf config.Config) (Store, error) { if name == "" { name = conf.Conn.Store } f, ok := factories[name] if !ok { return nil, fmt.Errorf("%w: %s", ErrNoFactory, name) } return f(conf) }