mirror of
https://github.com/aaru-dps/Aaru.git
synced 2025-12-16 19:24:25 +00:00
Fix database being in use while trying a master update.
This commit is contained in:
@@ -277,9 +277,9 @@ namespace Aaru.Core
|
||||
Start(ctx =>
|
||||
{
|
||||
ProgressTask task = ctx.AddTask("Adding known iNES/NES 2.0 headers");
|
||||
task.MaxValue = sync.NesHeaders.Count;
|
||||
task.MaxValue = sync.NesHeaders?.Count ?? 0;
|
||||
|
||||
foreach(NesHeaderDto header in sync.NesHeaders)
|
||||
foreach(NesHeaderDto header in sync.NesHeaders ?? new List<NesHeaderDto>())
|
||||
{
|
||||
task.Increment(1);
|
||||
|
||||
|
||||
@@ -85,11 +85,14 @@ public sealed class AaruContext : DbContext
|
||||
|
||||
/// <summary>Creates a database context with the database in the specified path</summary>
|
||||
/// <param name="dbPath">Path to database file</param>
|
||||
/// <param name="pooling">Enable database pooling</param>
|
||||
/// <returns>Database context</returns>
|
||||
public static AaruContext Create(string dbPath)
|
||||
public static AaruContext Create(string dbPath, bool pooling = true)
|
||||
{
|
||||
var optionsBuilder = new DbContextOptionsBuilder();
|
||||
optionsBuilder.UseLazyLoadingProxies().UseSqlite($"Data Source={dbPath}");
|
||||
|
||||
optionsBuilder.UseLazyLoadingProxies().
|
||||
UseSqlite(!pooling ? $"Data Source={dbPath};Pooling=False" : $"Data Source={dbPath}");
|
||||
|
||||
return new AaruContext(optionsBuilder.Options);
|
||||
}
|
||||
|
||||
@@ -121,15 +121,25 @@ namespace Aaru.Gui.ViewModels.Windows
|
||||
|
||||
Task.Run(() =>
|
||||
{
|
||||
AaruContext ctx;
|
||||
AaruContext ctx = null;
|
||||
|
||||
try
|
||||
{
|
||||
ctx = AaruContext.Create(Settings.Settings.LocalDbPath);
|
||||
ctx = AaruContext.Create(Settings.Settings.LocalDbPath, false);
|
||||
ctx.Database.Migrate();
|
||||
}
|
||||
catch(NotSupportedException)
|
||||
{
|
||||
try
|
||||
{
|
||||
ctx?.Database.CloseConnection();
|
||||
ctx?.Dispose();
|
||||
}
|
||||
catch(Exception)
|
||||
{
|
||||
// Should not ever arrive here, but if it does, keep trying to replace it anyway
|
||||
}
|
||||
|
||||
File.Delete(Settings.Settings.LocalDbPath);
|
||||
ctx = AaruContext.Create(Settings.Settings.LocalDbPath);
|
||||
ctx.Database.EnsureCreated();
|
||||
@@ -186,7 +196,7 @@ namespace Aaru.Gui.ViewModels.Windows
|
||||
// TODO: Update database
|
||||
}
|
||||
|
||||
var mainContext = AaruContext.Create(Settings.Settings.MainDbPath);
|
||||
var mainContext = AaruContext.Create(Settings.Settings.MainDbPath, false);
|
||||
|
||||
if(mainContext.Database.GetPendingMigrations().Any())
|
||||
{
|
||||
@@ -202,6 +212,8 @@ namespace Aaru.Gui.ViewModels.Windows
|
||||
ErrorWriteLine("Exception trying to remove old database version, cannot continue...");
|
||||
|
||||
AaruConsole.ErrorWriteLine("Please manually remove file at {0}", Settings.Settings.MainDbPath);
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
// TODO: Update database
|
||||
|
||||
21
Aaru/Main.cs
21
Aaru/Main.cs
@@ -44,6 +44,7 @@ using Aaru.Commands.Device;
|
||||
using Aaru.Commands.Filesystem;
|
||||
using Aaru.Commands.Image;
|
||||
using Aaru.Commands.Media;
|
||||
using Aaru.CommonTypes.Enums;
|
||||
using Aaru.Console;
|
||||
using Aaru.Core;
|
||||
using Aaru.Database;
|
||||
@@ -109,15 +110,25 @@ namespace Aaru
|
||||
|
||||
Settings.Settings.LoadSettings();
|
||||
|
||||
AaruContext ctx;
|
||||
AaruContext ctx=null;
|
||||
|
||||
try
|
||||
{
|
||||
ctx = AaruContext.Create(Settings.Settings.LocalDbPath);
|
||||
ctx = AaruContext.Create(Settings.Settings.LocalDbPath, false);
|
||||
ctx.Database.Migrate();
|
||||
}
|
||||
catch(NotSupportedException)
|
||||
{
|
||||
try
|
||||
{
|
||||
ctx?.Database.CloseConnection();
|
||||
ctx?.Dispose();
|
||||
}
|
||||
catch(Exception)
|
||||
{
|
||||
// Should not ever arrive here, but if it does, keep trying to replace it anyway
|
||||
}
|
||||
|
||||
File.Delete(Settings.Settings.LocalDbPath);
|
||||
ctx = AaruContext.Create(Settings.Settings.LocalDbPath);
|
||||
ctx.Database.EnsureCreated();
|
||||
@@ -160,7 +171,7 @@ namespace Aaru
|
||||
UpdateCommand.DoUpdate(true);
|
||||
}
|
||||
|
||||
var mainContext = AaruContext.Create(Settings.Settings.MainDbPath);
|
||||
var mainContext = AaruContext.Create(Settings.Settings.MainDbPath, false);
|
||||
|
||||
if(mainContext.Database.GetPendingMigrations().Any())
|
||||
{
|
||||
@@ -174,8 +185,12 @@ namespace Aaru
|
||||
{
|
||||
AaruConsole.ErrorWriteLine("Exception trying to remove old database version, cannot continue...");
|
||||
AaruConsole.ErrorWriteLine("Please manually remove file at {0}", Settings.Settings.MainDbPath);
|
||||
|
||||
return (int)ErrorNumber.CannotRemoveDatabase;
|
||||
}
|
||||
|
||||
mainContext.Database.CloseConnection();
|
||||
mainContext.Dispose();
|
||||
UpdateCommand.DoUpdate(true);
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user