Пример #1
0
        /// <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);
            }
        }
Пример #2
0
        /// <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);
            }
        }
Пример #3
0
        internal PluginSetting(PluginInfo pluginInfo, IPluginSettingRepository pluginSettingRepository, PluginSettingEntity pluginSettingEntity)
        {
            _pluginInfo = pluginInfo;
            _pluginSettingRepository = pluginSettingRepository;
            _pluginSettingEntity     = pluginSettingEntity;

            Name  = pluginSettingEntity.Name;
            Value = JsonConvert.DeserializeObject <T>(pluginSettingEntity.Value);
        }
Пример #4
0
        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 !;
Пример #5
0
        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;
            }
        }
Пример #6
0
        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]));
        }
Пример #7
0
 public void Add(PluginSettingEntity pluginSettingEntity)
 {
     _dbContext.PluginSettings.Add(pluginSettingEntity);
 }
Пример #8
0
 public void Save(PluginSettingEntity pluginSettingEntity)
 {
     _repository.Upsert(pluginSettingEntity);
 }
Пример #9
0
 public void Add(PluginSettingEntity pluginSettingEntity)
 {
     _repository.Insert(pluginSettingEntity);
 }