diff --git a/ProjectLighthouse/Maintenance/MaintenanceJobs/CleanupUnusedLocationsMaintenanceJob.cs b/ProjectLighthouse/Maintenance/MaintenanceJobs/CleanupUnusedLocationsMaintenanceJob.cs index 9bce8028..904a01fb 100644 --- a/ProjectLighthouse/Maintenance/MaintenanceJobs/CleanupUnusedLocationsMaintenanceJob.cs +++ b/ProjectLighthouse/Maintenance/MaintenanceJobs/CleanupUnusedLocationsMaintenanceJob.cs @@ -1,6 +1,8 @@ +using System; using System.Collections.Generic; using System.Linq; using System.Threading.Tasks; +using LBPUnion.ProjectLighthouse.Types.Profiles; namespace LBPUnion.ProjectLighthouse.Maintenance.MaintenanceJobs { @@ -10,15 +12,22 @@ namespace LBPUnion.ProjectLighthouse.Maintenance.MaintenanceJobs public string Name() => "Cleanup Unused Locations"; public string Description() => "Cleanup unused locations in the database."; - public Task Run() + public async Task Run() { List usedLocationIds = new(); usedLocationIds.AddRange(this.database.Slots.Select(slot => slot.LocationId)); usedLocationIds.AddRange(this.database.Users.Select(user => user.LocationId)); - this.database.RemoveRange(this.database.Locations.Where(l => !usedLocationIds.Contains(l.Id))); - return Task.CompletedTask; + IQueryable locationsToRemove = this.database.Locations.Where(l => !usedLocationIds.Contains(l.Id)); + + foreach (Location location in locationsToRemove) + { + Console.WriteLine("Removing location" + location.Id); + this.database.Locations.Remove(location); + } + + await this.database.SaveChangesAsync(); } } } \ No newline at end of file