in internal/service/plugin_common/plugin_common_service.go [137:210]
func (ps *PluginCommonService) initPluginData() {
// init plugin status
pluginStatus, err := ps.configService.GetStringValue(context.TODO(), constant.PluginStatus)
if err != nil {
log.Error(err)
} else {
if err := plugin.StatusManager.UnmarshalJSON([]byte(pluginStatus)); err != nil {
log.Error(err)
}
}
// init plugin config
pluginConfigs, err := ps.pluginConfigRepo.GetPluginConfigAll(context.Background())
if err != nil {
log.Error(err)
} else {
for _, pluginConfig := range pluginConfigs {
err := plugin.CallConfig(func(fn plugin.Config) error {
if fn.Info().SlugName == pluginConfig.PluginSlugName {
return fn.ConfigReceiver([]byte(pluginConfig.Value))
}
return nil
})
if err != nil {
log.Errorf("parse plugin config failed: %s %v", pluginConfig.PluginSlugName, err)
}
}
_ = plugin.CallCache(func(cache plugin.Cache) error {
ps.data.Cache = cache
return nil
})
}
// init plugin user config
plugin.RegisterGetPluginUserConfigFunc(func(userID, pluginSlugName string) []byte {
pluginUserConfig, exist, err := ps.pluginUserConfigRepo.GetPluginUserConfig(context.Background(), userID, pluginSlugName)
if err != nil {
log.Error(err)
return nil
}
if !exist {
return nil
}
return []byte(pluginUserConfig.Value)
})
// init plugin user config data
go func() {
page, pageSize := 1, 1000
for {
userConfigs, _, err := ps.pluginUserConfigRepo.GetPluginUserConfigPage(context.Background(), page, pageSize)
if err != nil {
log.Error(err)
return
}
if len(userConfigs) == 0 {
return
}
for _, userConfig := range userConfigs {
err := plugin.CallUserConfig(func(fn plugin.UserConfig) error {
if fn.Info().SlugName == userConfig.PluginSlugName {
return fn.UserConfigReceiver(userConfig.UserID, []byte(userConfig.Value))
}
return nil
})
if err != nil {
log.Errorf("parse plugin user config failed: %s %v", userConfig.PluginSlugName, err)
}
}
page++
}
}()
}