44 lines
1.0 KiB
Go
44 lines
1.0 KiB
Go
package client
|
|
|
|
import (
|
|
"d7y.io/dragonfly/v2/manager/config"
|
|
"d7y.io/dragonfly/v2/manager/store"
|
|
"d7y.io/dragonfly/v2/manager/store/orm"
|
|
"d7y.io/dragonfly/v2/pkg/dfcodes"
|
|
"d7y.io/dragonfly/v2/pkg/dferrors"
|
|
)
|
|
|
|
type storeSetup func(cfg *config.StoreConfig) (store.Store, error)
|
|
|
|
var storePlugins = map[string]storeSetup{
|
|
"mysql": orm.NewMySQLOrmStore,
|
|
"sqlite": orm.NewSQLiteOrmStore,
|
|
}
|
|
|
|
func NewStore(cfg *config.Config) (store.Store, error) {
|
|
if cfg.Configure.StoreName == "" {
|
|
return nil, dferrors.Newf(dfcodes.ManagerConfigError, "config error: store-name nil")
|
|
}
|
|
|
|
for _, store := range cfg.Stores {
|
|
source, err := store.Valid()
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
|
|
if cfg.Configure.StoreName == store.Name {
|
|
p, ok := storePlugins[source]
|
|
if ok {
|
|
s, err := p(store)
|
|
if err != nil {
|
|
return nil, dferrors.Newf(dfcodes.ManagerConfigError, "setup error: %s", err.Error())
|
|
}
|
|
|
|
return s, nil
|
|
}
|
|
}
|
|
}
|
|
|
|
return nil, dferrors.Newf(dfcodes.ManagerConfigError, "config error: not find matched store")
|
|
}
|