mirror of
https://github.com/aaru-dps/Aaru.git
synced 2025-12-16 19:24:25 +00:00
[Core] Change statistics update to be async.
This commit is contained in:
File diff suppressed because it is too large
Load Diff
@@ -148,8 +148,8 @@ public sealed class SplashWindowViewModel(SplashWindow view) : ViewModelBase
|
|||||||
|
|
||||||
foreach(string migration in ctx.Database.GetPendingMigrations())
|
foreach(string migration in ctx.Database.GetPendingMigrations())
|
||||||
{
|
{
|
||||||
ctx.Database
|
|
||||||
#pragma warning disable EF1002
|
#pragma warning disable EF1002
|
||||||
|
ctx.Database
|
||||||
.ExecuteSqlRaw($"INSERT INTO \"__EFMigrationsHistory\" (MigrationId, ProductVersion) VALUES ('{
|
.ExecuteSqlRaw($"INSERT INTO \"__EFMigrationsHistory\" (MigrationId, ProductVersion) VALUES ('{
|
||||||
migration}', '0.0.0')");
|
migration}', '0.0.0')");
|
||||||
#pragma warning restore EF1002
|
#pragma warning restore EF1002
|
||||||
@@ -294,9 +294,9 @@ public sealed class SplashWindowViewModel(SplashWindow view) : ViewModelBase
|
|||||||
Message = UI.Saving_statistics;
|
Message = UI.Saving_statistics;
|
||||||
AaruConsole.WriteLine(UI.Saving_statistics);
|
AaruConsole.WriteLine(UI.Saving_statistics);
|
||||||
|
|
||||||
Task.Run(() =>
|
Task.Run(async () =>
|
||||||
{
|
{
|
||||||
Statistics.SaveStats();
|
await Statistics.SaveStats();
|
||||||
|
|
||||||
Dispatcher.UIThread.Post(LoadMainWindow);
|
Dispatcher.UIThread.Post(LoadMainWindow);
|
||||||
});
|
});
|
||||||
|
|||||||
40
Aaru/Main.cs
40
Aaru/Main.cs
@@ -37,6 +37,7 @@ using System.IO;
|
|||||||
using System.Linq;
|
using System.Linq;
|
||||||
using System.Reflection;
|
using System.Reflection;
|
||||||
using System.Text;
|
using System.Text;
|
||||||
|
using System.Threading.Tasks;
|
||||||
using Aaru.Commands;
|
using Aaru.Commands;
|
||||||
using Aaru.Commands.Archive;
|
using Aaru.Commands.Archive;
|
||||||
using Aaru.Commands.Database;
|
using Aaru.Commands.Database;
|
||||||
@@ -62,7 +63,7 @@ class MainClass
|
|||||||
static string _assemblyTitle;
|
static string _assemblyTitle;
|
||||||
static AssemblyInformationalVersionAttribute _assemblyVersion;
|
static AssemblyInformationalVersionAttribute _assemblyVersion;
|
||||||
|
|
||||||
public static int Main([NotNull] string[] args)
|
public static async Task<int> Main([NotNull] string[] args)
|
||||||
{
|
{
|
||||||
IAnsiConsole stderrConsole = AnsiConsole.Create(new AnsiConsoleSettings
|
IAnsiConsole stderrConsole = AnsiConsole.Create(new AnsiConsoleSettings
|
||||||
{
|
{
|
||||||
@@ -113,14 +114,17 @@ class MainClass
|
|||||||
try
|
try
|
||||||
{
|
{
|
||||||
ctx = AaruContext.Create(Settings.Settings.LocalDbPath, false);
|
ctx = AaruContext.Create(Settings.Settings.LocalDbPath, false);
|
||||||
ctx.Database.Migrate();
|
await ctx.Database.MigrateAsync();
|
||||||
}
|
}
|
||||||
catch(NotSupportedException)
|
catch(NotSupportedException)
|
||||||
{
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
ctx?.Database.CloseConnection();
|
if(ctx is not null)
|
||||||
ctx?.Dispose();
|
{
|
||||||
|
await ctx.Database.CloseConnectionAsync();
|
||||||
|
await ctx.DisposeAsync();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
catch(Exception)
|
catch(Exception)
|
||||||
{
|
{
|
||||||
@@ -129,21 +133,21 @@ class MainClass
|
|||||||
|
|
||||||
File.Delete(Settings.Settings.LocalDbPath);
|
File.Delete(Settings.Settings.LocalDbPath);
|
||||||
ctx = AaruContext.Create(Settings.Settings.LocalDbPath);
|
ctx = AaruContext.Create(Settings.Settings.LocalDbPath);
|
||||||
ctx.Database.EnsureCreated();
|
await ctx.Database.EnsureCreatedAsync();
|
||||||
|
|
||||||
ctx.Database
|
await ctx.Database
|
||||||
.ExecuteSqlRaw("CREATE TABLE IF NOT EXISTS \"__EFMigrationsHistory\" (\"MigrationId\" TEXT PRIMARY KEY, \"ProductVersion\" TEXT)");
|
.ExecuteSqlRawAsync("CREATE TABLE IF NOT EXISTS \"__EFMigrationsHistory\" (\"MigrationId\" TEXT PRIMARY KEY, \"ProductVersion\" TEXT)");
|
||||||
|
|
||||||
foreach(string migration in ctx.Database.GetPendingMigrations())
|
foreach(string migration in await ctx.Database.GetPendingMigrationsAsync())
|
||||||
{
|
{
|
||||||
ctx.Database
|
|
||||||
#pragma warning disable EF1002
|
#pragma warning disable EF1002
|
||||||
.ExecuteSqlRaw($"INSERT INTO \"__EFMigrationsHistory\" (MigrationId, ProductVersion) VALUES ('{
|
await ctx.Database
|
||||||
migration}', '0.0.0')");
|
.ExecuteSqlRawAsync($"INSERT INTO \"__EFMigrationsHistory\" (MigrationId, ProductVersion) VALUES ('{
|
||||||
|
migration}', '0.0.0')");
|
||||||
#pragma warning restore EF1002
|
#pragma warning restore EF1002
|
||||||
}
|
}
|
||||||
|
|
||||||
ctx.SaveChanges();
|
await ctx.SaveChangesAsync();
|
||||||
}
|
}
|
||||||
|
|
||||||
// Remove duplicates
|
// Remove duplicates
|
||||||
@@ -170,7 +174,7 @@ class MainClass
|
|||||||
// Remove nulls
|
// Remove nulls
|
||||||
ctx.RemoveRange(ctx.SeenDevices.Where(d => d.Manufacturer == null && d.Model == null && d.Revision == null));
|
ctx.RemoveRange(ctx.SeenDevices.Where(d => d.Manufacturer == null && d.Model == null && d.Revision == null));
|
||||||
|
|
||||||
ctx.SaveChanges();
|
await ctx.SaveChangesAsync();
|
||||||
|
|
||||||
var mainDbUpdate = false;
|
var mainDbUpdate = false;
|
||||||
|
|
||||||
@@ -182,7 +186,7 @@ class MainClass
|
|||||||
|
|
||||||
var mainContext = AaruContext.Create(Settings.Settings.MainDbPath, false);
|
var mainContext = AaruContext.Create(Settings.Settings.MainDbPath, false);
|
||||||
|
|
||||||
if(mainContext.Database.GetPendingMigrations().Any())
|
if((await mainContext.Database.GetPendingMigrationsAsync()).Any())
|
||||||
{
|
{
|
||||||
AaruConsole.WriteLine(UI.New_database_version_updating);
|
AaruConsole.WriteLine(UI.New_database_version_updating);
|
||||||
|
|
||||||
@@ -198,8 +202,8 @@ class MainClass
|
|||||||
return (int)ErrorNumber.CannotRemoveDatabase;
|
return (int)ErrorNumber.CannotRemoveDatabase;
|
||||||
}
|
}
|
||||||
|
|
||||||
mainContext.Database.CloseConnection();
|
await mainContext.Database.CloseConnectionAsync();
|
||||||
mainContext.Dispose();
|
await mainContext.DisposeAsync();
|
||||||
UpdateCommand.DoUpdate(true);
|
UpdateCommand.DoUpdate(true);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -244,9 +248,9 @@ class MainClass
|
|||||||
rootCommand.AddCommand(new ListNamespacesCommand());
|
rootCommand.AddCommand(new ListNamespacesCommand());
|
||||||
rootCommand.AddCommand(new RemoteCommand());
|
rootCommand.AddCommand(new RemoteCommand());
|
||||||
|
|
||||||
int ret = rootCommand.Invoke(args);
|
int ret = await rootCommand.InvokeAsync(args);
|
||||||
|
|
||||||
Statistics.SaveStats();
|
await Statistics.SaveStats();
|
||||||
|
|
||||||
if(!rootCommand.Parse(args).RootCommandResult.GetValueForOption(pauseOption)) return ret;
|
if(!rootCommand.Parse(args).RootCommandResult.GetValueForOption(pauseOption)) return ret;
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user