mirror of
https://github.com/RPCS3/discord-bot.git
synced 2025-04-14 02:40:44 +00:00
48 lines
1.9 KiB
C#
48 lines
1.9 KiB
C#
using System.IO;
|
|
using CompatBot.EventHandlers.LogParsing.SourceHandlers;
|
|
using Microsoft.EntityFrameworkCore;
|
|
|
|
namespace CompatBot.Database.Providers;
|
|
|
|
internal static class SqlConfiguration
|
|
{
|
|
internal const string ConfigVarPrefix = "ENV-";
|
|
|
|
public static async ValueTask RestoreAsync()
|
|
{
|
|
await using var db = await BotDb.OpenReadAsync().ConfigureAwait(false);
|
|
var setVars = await db.BotState.AsNoTracking().Where(v => v.Key.StartsWith(ConfigVarPrefix)).ToListAsync().ConfigureAwait(false);
|
|
if (setVars.Count is 0)
|
|
return;
|
|
|
|
foreach (var stateVar in setVars)
|
|
if (stateVar.Value is string value)
|
|
Config.InMemorySettings[stateVar.Key[ConfigVarPrefix.Length ..]] = value;
|
|
if (!Config.InMemorySettings.TryGetValue(nameof(Config.GoogleApiCredentials), out var googleCreds) ||
|
|
string.IsNullOrEmpty(googleCreds))
|
|
{
|
|
if (Path.Exists(Config.GoogleApiConfigPath))
|
|
{
|
|
Config.Log.Info("Migrating Google API credentials storage from file to db…");
|
|
try
|
|
{
|
|
googleCreds = await File.ReadAllTextAsync(Config.GoogleApiConfigPath).ConfigureAwait(false);
|
|
if (GoogleDriveHandler.ValidateCredentials(googleCreds))
|
|
{
|
|
Config.InMemorySettings[nameof(Config.GoogleApiCredentials)] = googleCreds;
|
|
Config.Log.Info("Successfully migrated Google API credentials");
|
|
}
|
|
else
|
|
{
|
|
Config.Log.Error("Failed to migrate Google API credentials");
|
|
}
|
|
}
|
|
catch (Exception e)
|
|
{
|
|
Config.Log.Error(e, "Failed to migrate Google API credentials");
|
|
}
|
|
}
|
|
}
|
|
Config.RebuildConfiguration();
|
|
}
|
|
} |