mirror of
https://github.com/aaru-dps/Aaru.git
synced 2025-12-16 19:24:25 +00:00
Remove duplicate seen devices from database.
This commit is contained in:
@@ -123,6 +123,22 @@ namespace Aaru.Gui.ViewModels.Windows
|
|||||||
{
|
{
|
||||||
var ctx = AaruContext.Create(Settings.Settings.LocalDbPath);
|
var ctx = AaruContext.Create(Settings.Settings.LocalDbPath);
|
||||||
ctx.Database.Migrate();
|
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();
|
ctx.SaveChanges();
|
||||||
|
|
||||||
Dispatcher.UIThread.Post(UpdateMasterDatabase);
|
Dispatcher.UIThread.Post(UpdateMasterDatabase);
|
||||||
|
|||||||
15
Aaru/Main.cs
15
Aaru/Main.cs
@@ -81,6 +81,21 @@ namespace Aaru
|
|||||||
|
|
||||||
var ctx = AaruContext.Create(Settings.Settings.LocalDbPath);
|
var ctx = AaruContext.Create(Settings.Settings.LocalDbPath);
|
||||||
ctx.Database.Migrate();
|
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();
|
ctx.SaveChanges();
|
||||||
|
|
||||||
bool masterDbUpdate = false;
|
bool masterDbUpdate = false;
|
||||||
|
|||||||
Reference in New Issue
Block a user