/// <summary> /// Sets a long-valued setting. /// </summary> /// <param name="Key">Key name.</param> /// <param name="Value">New value.</param> /// <returns>If the setting was saved (true). If the setting existed, and had the same value, false is returned.</returns> public static async Task <bool> SetAsync(string Key, long Value) { await synchObject.BeginWrite(); try { Int64Setting Setting = await Database.FindFirstDeleteRest <Int64Setting>(new FilterFieldEqualTo("Key", Key)); if (Setting is null) { Setting = new Int64Setting(Key, Value); await Database.Insert(Setting); return(true); } else { if (Setting.Value != Value) { Setting.Value = Value; await Database.Update(Setting); return(true); } else { return(false); } } } finally { await synchObject.EndWrite(); } }
/// <summary> /// Sets a long-valued setting. /// </summary> /// <param name="Key">Key name.</param> /// <param name="Value">New value.</param> /// <returns>If the setting was saved (true). If the setting existed, and had the same value, false is returned.</returns> public static async Task <bool> SetAsync(string Key, long Value) { foreach (Int64Setting Setting in await Database.Find <Int64Setting>(new FilterFieldEqualTo("Key", Key))) { if (Setting.Value != Value) { Setting.Value = Value; await Database.Update(Setting); //Log.Informational("Setting updated.", Key, new KeyValuePair<string, object>("Value", Value)); return(true); } else { return(false); } } Int64Setting NewSetting = new Int64Setting(Key, Value); await Database.Insert(NewSetting); //Log.Informational("Setting created.", Key, new KeyValuePair<string, object>("Value", Value)); return(true); }
/// <summary> /// Sets a long-valued setting. /// </summary> /// <param name="Key">Key name.</param> /// <param name="Value">New value.</param> /// <returns>If the setting was saved (true). If the setting existed, and had the same value, false is returned.</returns> public static async Task <bool> SetAsync(string Key, long Value) { using (Semaphore Semaphore = await Semaphores.BeginWrite("setting:" + Key)) { Int64Setting Setting = await Database.FindFirstDeleteRest <Int64Setting>(new FilterFieldEqualTo("Key", Key)); if (Setting is null) { Setting = new Int64Setting(Key, Value); await Database.Insert(Setting); return(true); } else { if (Setting.Value != Value) { Setting.Value = Value; await Database.Update(Setting); return(true); } else { return(false); } } } }
/// <summary> /// Sets a long-valued setting. /// </summary> /// <param name="Key">Key name.</param> /// <param name="Value">New value.</param> /// <returns>If the setting was saved (true). If the setting existed, and had the same value, false is returned.</returns> public static async Task <bool> SetAsync(string Key, long Value) { using (Semaphore Semaphore = await Semaphores.BeginWrite("setting:" + Key)) { Int64Setting Setting = await Database.FindFirstDeleteRest <Int64Setting>(new FilterFieldEqualTo("Key", Key)); return(await SetAsyncLocked(Key, Value, Setting)); } }
private static async Task <bool> SetAsyncLocked(string Key, long Value, Int64Setting Setting) { if (Setting is null) { Setting = new Int64Setting(Key, Value); await Database.Insert(Setting); return(true); } else { if (Setting.Value != Value) { Setting.Value = Value; await Database.Update(Setting); return(true); } else { return(false); } } }
/// <summary> /// Gets a long-valued setting. /// </summary> /// <param name="Key">Key name.</param> /// <param name="DefaultValue">Default value, if not found.</param> /// <returns>Setting value.</returns> public static async Task <long> GetAsync(string Key, long DefaultValue) { Int64Setting Setting = await GetAsync <Int64Setting>(Key); return(Setting?.Value ?? DefaultValue); }