Remove duplicate seen devices from database.

This commit is contained in:
2020-04-18 19:16:31 +01:00
parent c1f7719765
commit c6b23648cb
2 changed files with 31 additions and 0 deletions

View File

@@ -123,6 +123,22 @@ namespace Aaru.Gui.ViewModels.Windows
{
var ctx = AaruContext.Create(Settings.Settings.LocalDbPath);
ctx.Database.Migrate();
// Remove duplicates
foreach(var duplicate in ctx.SeenDevices.AsEnumerable().GroupBy(a => new
{
a.Manufacturer, a.Model, a.Revision, a.Bus
}).Where(a => a.Count() > 1).Distinct().Select(a => a.Key))
ctx.RemoveRange(ctx.SeenDevices.
Where(d => d.Manufacturer == duplicate.Manufacturer &&
d.Model == duplicate.Model &&
d.Revision == duplicate.Revision &&
d.Bus == duplicate.Bus).Skip(1));
// Remove nulls
ctx.RemoveRange(ctx.SeenDevices.Where(d => d.Manufacturer == null && d.Model == null &&
d.Revision == null));
ctx.SaveChanges();
Dispatcher.UIThread.Post(UpdateMasterDatabase);

View File

@@ -81,6 +81,21 @@ namespace Aaru
var ctx = AaruContext.Create(Settings.Settings.LocalDbPath);
ctx.Database.Migrate();
// Remove duplicates
foreach(var duplicate in ctx.SeenDevices.AsEnumerable().GroupBy(a => new
{
a.Manufacturer, a.Model, a.Revision, a.Bus
}).Where(a => a.Count() > 1).Distinct().Select(a => a.Key))
ctx.RemoveRange(ctx.SeenDevices.
Where(d => d.Manufacturer == duplicate.Manufacturer && d.Model == duplicate.Model &&
d.Revision == duplicate.Revision && d.Bus == duplicate.Bus).
Skip(1));
// Remove nulls
ctx.RemoveRange(ctx.SeenDevices.Where(d => d.Manufacturer == null && d.Model == null &&
d.Revision == null));
ctx.SaveChanges();
bool masterDbUpdate = false;