Make sure migration for apps does not crash

This commit is contained in:
Kukks 2021-10-28 12:23:21 +02:00
parent a5ae509f9f
commit eee8008bb2

View file

@ -192,7 +192,7 @@ namespace BTCPayServer.Hosting
private async Task MigrateAppCustomOption() private async Task MigrateAppCustomOption()
{ {
await using var ctx = _DBContextFactory.CreateContext(); await using var ctx = _DBContextFactory.CreateContext();
foreach (var app in await ctx.Apps.AsQueryable().ToArrayAsync()) foreach (var app in await ctx.Apps.Include(data => data.StoreData).AsQueryable().ToArrayAsync())
{ {
ViewPointOfSaleViewModel.Item[] items; ViewPointOfSaleViewModel.Item[] items;
string newTemplate; string newTemplate;
@ -200,6 +200,11 @@ namespace BTCPayServer.Hosting
{ {
case nameof(AppType.Crowdfund): case nameof(AppType.Crowdfund):
var settings1 = app.GetSettings<CrowdfundSettings>(); var settings1 = app.GetSettings<CrowdfundSettings>();
if (string.IsNullOrEmpty(settings1.TargetCurrency))
{
settings1.TargetCurrency = app.StoreData.GetStoreBlob().DefaultCurrency;
app.SetSettings(settings1);
}
items = _appService.Parse(settings1.PerksTemplate, settings1.TargetCurrency); items = _appService.Parse(settings1.PerksTemplate, settings1.TargetCurrency);
newTemplate = _appService.SerializeTemplate(items); newTemplate = _appService.SerializeTemplate(items);
if (settings1.PerksTemplate != newTemplate) if (settings1.PerksTemplate != newTemplate)
@ -212,6 +217,11 @@ namespace BTCPayServer.Hosting
case nameof(AppType.PointOfSale): case nameof(AppType.PointOfSale):
var settings2 = app.GetSettings<AppsController.PointOfSaleSettings>(); var settings2 = app.GetSettings<AppsController.PointOfSaleSettings>();
if (string.IsNullOrEmpty(settings2.Currency))
{
settings2.Currency = app.StoreData.GetStoreBlob().DefaultCurrency;
app.SetSettings(settings2);
}
items = _appService.Parse(settings2.Template, settings2.Currency); items = _appService.Parse(settings2.Template, settings2.Currency);
newTemplate = _appService.SerializeTemplate(items); newTemplate = _appService.SerializeTemplate(items);
if (settings2.Template != newTemplate) if (settings2.Template != newTemplate)