MCPcopy Create free account
hub / github.com/krau/SaveAny-Bot / LoadStorageConfigs

Function LoadStorageConfigs

config/storage/factory.go:36–70  ·  view source on GitHub ↗
(v *viper.Viper)

Source from the content-addressed store, hash-verified

34}
35
36func LoadStorageConfigs(v *viper.Viper) ([]StorageConfig, error) {
37 var baseConfigs []BaseConfig
38 if err := v.UnmarshalKey("storages", &baseConfigs); err != nil {
39 return nil, fmt.Errorf("failed to unmarshal storage configs: %w", err)
40 }
41
42 var configs []StorageConfig
43 for _, baseCfg := range baseConfigs {
44 if !baseCfg.Enable {
45 continue
46 }
47 st, err := storenum.ParseStorageType(baseCfg.Type)
48 if err != nil {
49 return nil, fmt.Errorf("invalid storage type %s for %s: %w", baseCfg.Type, baseCfg.Name, err)
50 }
51
52 factory, ok := storageFactories[st]
53 if !ok {
54 return nil, fmt.Errorf("unsupported storage type: %s", baseCfg.Type)
55 }
56
57 cfg, err := factory(&baseCfg)
58 if err != nil {
59 return nil, fmt.Errorf("failed to create storage config for %s: %w", baseCfg.Name, err)
60 }
61
62 if err := cfg.Validate(); err != nil {
63 return nil, fmt.Errorf("invalid storage config for %s: %w", baseCfg.Name, err)
64 }
65
66 configs = append(configs, cfg)
67 }
68
69 return configs, nil
70}

Callers 1

InitFunction · 0.92

Calls 1

ValidateMethod · 0.65

Tested by

no test coverage detected