/// <summary> /// Gets the setting with the provided name. If the setting does not exist yet, it is created. /// </summary> /// <typeparam name="T">The type of the setting, can be any serializable type</typeparam> /// <param name="name">The name of the setting</param> /// <param name="defaultValue">The default value to use if the setting does not exist yet</param> /// <returns></returns> public PluginSetting <T> GetSetting <T>(string name, T defaultValue = default) { lock (_settingEntities) { // Return cached value if available if (_settingEntities.ContainsKey(name)) { return((PluginSetting <T>)_settingEntities[name]); } // Try to find in database PluginSettingEntity settingEntity = _pluginRepository.GetSettingByNameAndGuid(name, PluginInfo.Guid); // If not found, create a new one if (settingEntity == null) { settingEntity = new PluginSettingEntity { Name = name, PluginGuid = PluginInfo.Guid, Value = JsonConvert.SerializeObject(defaultValue) }; _pluginRepository.AddSetting(settingEntity); } PluginSetting <T> pluginSetting = new PluginSetting <T>(PluginInfo, _pluginRepository, settingEntity); // This overrides null with the default value, I'm not sure if that's desirable because you // might expect something to go null and you might not // if (pluginSetting.Value == null && defaultValue != null) // pluginSetting.Value = defaultValue; _settingEntities.Add(name, pluginSetting); return(pluginSetting); } }
/// <summary> /// Gets the setting with the provided name. If the setting does not exist yet, it is created. /// </summary> /// <typeparam name="T">The type of the setting, can be any serializable type</typeparam> /// <param name="name">The name of the setting</param> /// <param name="defaultValue">The default value to use if the setting does not exist yet</param> /// <returns></returns> public PluginSetting <T> GetSetting <T>(string name, T defaultValue = default) { lock (_settingEntities) { // Return cached value if available if (_settingEntities.ContainsKey(name)) { return((PluginSetting <T>)_settingEntities[name]); } // Try to find in database var settingEntity = _pluginSettingRepository.GetByNameAndPluginGuid(name, _pluginInfo.Guid); // If not found, create a new one if (settingEntity == null) { settingEntity = new PluginSettingEntity { Name = name, PluginGuid = _pluginInfo.Guid, Value = JsonConvert.SerializeObject(defaultValue) }; _pluginSettingRepository.Add(settingEntity); } var pluginSetting = new PluginSetting <T>(_pluginInfo, _pluginSettingRepository, settingEntity); _settingEntities.Add(name, pluginSetting); return(pluginSetting); } }
internal PluginSetting(PluginInfo pluginInfo, IPluginSettingRepository pluginSettingRepository, PluginSettingEntity pluginSettingEntity) { _pluginInfo = pluginInfo; _pluginSettingRepository = pluginSettingRepository; _pluginSettingEntity = pluginSettingEntity; Name = pluginSettingEntity.Name; Value = JsonConvert.DeserializeObject <T>(pluginSettingEntity.Value); }
internal PluginSetting(Plugin plugin, IPluginRepository pluginRepository, PluginSettingEntity pluginSettingEntity) { _plugin = plugin; _pluginRepository = pluginRepository; _pluginSettingEntity = pluginSettingEntity; Name = pluginSettingEntity.Name; try { _value = CoreJson.DeserializeObject <T>(pluginSettingEntity.Value) !; } catch (JsonReaderException) { _value = default !;
internal PluginSetting(PluginInfo pluginInfo, IPluginRepository pluginRepository, PluginSettingEntity pluginSettingEntity) { _pluginInfo = pluginInfo; _pluginRepository = pluginRepository; _pluginSettingEntity = pluginSettingEntity; Name = pluginSettingEntity.Name; try { Value = JsonConvert.DeserializeObject <T>(pluginSettingEntity.Value); } catch (JsonReaderException) { Value = default; } }
public PluginSetting <T> GetSetting <T>(string name, T defaultValue = default(T)) { if (_settingEntities.ContainsKey(name)) { return(new PluginSetting <T>(_pluginInfo, _pluginSettingRepository, _settingEntities[name])); } var settingEntity = new PluginSettingEntity { Name = name, PluginGuid = _pluginInfo.Guid, Value = JsonConvert.SerializeObject(defaultValue) }; _pluginSettingRepository.Add(settingEntity); _pluginSettingRepository.Save(); _settingEntities.Add(name, settingEntity); return(new PluginSetting <T>(_pluginInfo, _pluginSettingRepository, _settingEntities[name])); }
public void Add(PluginSettingEntity pluginSettingEntity) { _dbContext.PluginSettings.Add(pluginSettingEntity); }
public void Save(PluginSettingEntity pluginSettingEntity) { _repository.Upsert(pluginSettingEntity); }
public void Add(PluginSettingEntity pluginSettingEntity) { _repository.Insert(pluginSettingEntity); }