2025-03-08 19:31:56 -06:00
|
|
|
namespace AltGen.Console.Config;
|
|
|
|
|
|
2025-03-10 20:48:19 -05:00
|
|
|
record AppSettings
|
2025-03-08 19:31:56 -06:00
|
|
|
{
|
2025-03-10 20:48:19 -05:00
|
|
|
public ProviderSettings[] Providers { get; init; } = [];
|
|
|
|
|
|
|
|
|
|
public AppSettings(ProviderSettings[] providers)
|
|
|
|
|
{
|
|
|
|
|
Providers = providers;
|
|
|
|
|
}
|
|
|
|
|
|
2025-03-08 19:31:56 -06:00
|
|
|
public AppSettings AddOrUpdateProvider(AddConfigCommand.Settings settings)
|
|
|
|
|
{
|
|
|
|
|
var updatedProviders = Providers.Select(p =>
|
|
|
|
|
{
|
|
|
|
|
if (p.Provider == settings.Provider)
|
|
|
|
|
{
|
|
|
|
|
return p with { Key = settings.Key, Default = settings.Default };
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (p.Provider != settings.Provider && settings.Default)
|
|
|
|
|
{
|
|
|
|
|
return p with { Default = false };
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return p;
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
var provider = Providers.FirstOrDefault(p => p.Provider == settings.Provider);
|
|
|
|
|
|
|
|
|
|
if (provider is null)
|
|
|
|
|
{
|
|
|
|
|
var newProvider = new ProviderSettings(settings.Provider, settings.Key, settings.Default);
|
|
|
|
|
return this with { Providers = [.. updatedProviders, newProvider] };
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return this with { Providers = [.. updatedProviders] };
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public AppSettings RemoveProvider(RemoveConfigCommand.Settings settings)
|
|
|
|
|
{
|
|
|
|
|
var updatedProviders = Providers.Where(p => p.Provider != settings.Provider);
|
|
|
|
|
return this with { Providers = [.. updatedProviders] };
|
|
|
|
|
}
|
|
|
|
|
}
|