mirror of
https://github.com/LBPUnion/ProjectLighthouse.git
synced 2025-06-01 05:32:27 +00:00
Refactor Database into DatabaseContext Moved into separate folder so it actually has a namespace instead sitting in the root
34 lines
No EOL
1.2 KiB
C#
34 lines
No EOL
1.2 KiB
C#
using System;
|
|
using System.Collections.Generic;
|
|
using System.Linq;
|
|
using System.Threading.Tasks;
|
|
using LBPUnion.ProjectLighthouse.Database;
|
|
using LBPUnion.ProjectLighthouse.Types.Maintenance;
|
|
using LBPUnion.ProjectLighthouse.Types.Misc;
|
|
|
|
namespace LBPUnion.ProjectLighthouse.Administration.Maintenance.MaintenanceJobs;
|
|
|
|
public class CleanupUnusedLocationsMaintenanceJob : IMaintenanceJob
|
|
{
|
|
private readonly DatabaseContext database = new();
|
|
public string Name() => "Cleanup Unused Locations";
|
|
public string Description() => "Cleanup unused locations in the database.";
|
|
|
|
public async Task Run()
|
|
{
|
|
List<int> usedLocationIds = new();
|
|
|
|
usedLocationIds.AddRange(this.database.Slots.Select(slot => slot.LocationId));
|
|
usedLocationIds.AddRange(this.database.Users.Select(user => user.LocationId));
|
|
|
|
IQueryable<Location> 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();
|
|
}
|
|
} |