60 lines
2.3 KiB
C#
60 lines
2.3 KiB
C#
using System;
|
|
using System.Collections.Generic;
|
|
using System.Data;
|
|
using ChaosBot.Database.Entity;
|
|
using Microsoft.Extensions.Configuration;
|
|
using NLog;
|
|
|
|
namespace ChaosBot.Database.Repository
|
|
{
|
|
public static class ConfigurationRepository
|
|
{
|
|
public static IConfiguration AppSettingsHandler { get; set; }
|
|
|
|
private static readonly string ServersTable = "ServerConfigurationFlags";
|
|
|
|
/// <summary>
|
|
/// Get global configuration option
|
|
/// </summary>
|
|
/// <param name="configurationFlag"></param>
|
|
/// <typeparam name="T"></typeparam>
|
|
/// <returns></returns>
|
|
public static T GetValue<T>(string configurationFlag)
|
|
{
|
|
return AppSettingsHandler.GetValue<T>(configurationFlag);
|
|
}
|
|
|
|
/// <summary>
|
|
/// Get guild specific configuration option
|
|
/// </summary>
|
|
/// <param name="configurationFlag"></param>
|
|
/// <param name="guildId"></param>
|
|
/// <typeparam name="T"></typeparam>
|
|
/// <returns></returns>
|
|
public static T GetValue<T>(string configurationFlag, ulong guildId)
|
|
{
|
|
if (Program._logger == null) return AppSettingsHandler.GetValue<T>($"Servers:{guildId}:{configurationFlag}");
|
|
|
|
Program._logger.Info($"===> called for {configurationFlag} in {guildId}");
|
|
Dictionary<string, object> filterColumns = new Dictionary<string, object>();
|
|
filterColumns.Add("key", configurationFlag);
|
|
filterColumns.Add("guildId", Convert.ToInt64(guildId));
|
|
DataTable valueTable = Controller.SelectQuery(ServersTable, filterColumns: filterColumns);
|
|
if (valueTable.Rows.Count == 1)
|
|
{
|
|
return ServerConfigurationFlag<T>.Deserialize(valueTable.Rows[0]["serializedValue"].ToString());
|
|
}
|
|
return AppSettingsHandler.GetValue<T>($"Servers:{guildId}:{configurationFlag}");
|
|
}
|
|
|
|
/// <summary>
|
|
/// Grab configuration from appsettings.json, method does not look at the database
|
|
/// </summary>
|
|
/// <param name="configurationFlag"></param>
|
|
/// <returns></returns>
|
|
public static IConfigurationSection GetSection(string configurationFlag)
|
|
{
|
|
return AppSettingsHandler.GetSection(configurationFlag);
|
|
}
|
|
}
|
|
} |