From 46c80985ec50f515ff40e8994ad9aa905bb06088 Mon Sep 17 00:00:00 2001 From: Alex Holliday Date: Thu, 21 May 2026 09:59:42 -0700 Subject: [PATCH] add findByIds to MW repository --- .../IMaintenanceWindowsRepository.ts | 1 + .../MongoMaintenanceWindowsRepository.ts | 14 ++++++++++++++ 2 files changed, 15 insertions(+) diff --git a/server/src/repositories/maintenance-windows/IMaintenanceWindowsRepository.ts b/server/src/repositories/maintenance-windows/IMaintenanceWindowsRepository.ts index fca63ac35..0f4ad66a2 100644 --- a/server/src/repositories/maintenance-windows/IMaintenanceWindowsRepository.ts +++ b/server/src/repositories/maintenance-windows/IMaintenanceWindowsRepository.ts @@ -5,6 +5,7 @@ export interface IMaintenanceWindowsRepository { // fetch findById(id: string, teamId: string): Promise; findByMonitorId(monitorId: string, teamId: string): Promise; + findByMonitorIds(monitorIds: string[], teamId: string, excludeId?: string): Promise; findByTeamId(teamId: string, page: number, rowsPerPage: number, field?: string, order?: string, active?: boolean): Promise; // update diff --git a/server/src/repositories/maintenance-windows/MongoMaintenanceWindowsRepository.ts b/server/src/repositories/maintenance-windows/MongoMaintenanceWindowsRepository.ts index 635ddc2de..c3f94f55d 100644 --- a/server/src/repositories/maintenance-windows/MongoMaintenanceWindowsRepository.ts +++ b/server/src/repositories/maintenance-windows/MongoMaintenanceWindowsRepository.ts @@ -65,6 +65,18 @@ class MongoMaintenanceWindowsRepository implements IMaintenanceWindowsRepository return this.toEntity(maintenanceWindow); }; + findByMonitorIds = async (monitorIds: string[], teamId: string, excludeId?: string): Promise => { + const query: Record = { + monitorIds: { $in: monitorIds }, + teamId, + }; + if (excludeId) { + query._id = { $ne: new mongoose.Types.ObjectId(excludeId) }; + } + const maintenanceWindows = await MaintenanceWindowModel.find(query); + return this.mapDocuments(maintenanceWindows); + }; + findByMonitorId = async (monitorId: string, teamId: string): Promise => { const maintenanceWindows = await MaintenanceWindowModel.find({ monitorIds: monitorId, @@ -113,6 +125,7 @@ class MongoMaintenanceWindowsRepository implements IMaintenanceWindowsRepository if (!updated) { throw new AppError({ message: "Maintenance window not found or could not be updated", status: 404 }); } + return this.toEntity(updated); }; @@ -124,6 +137,7 @@ class MongoMaintenanceWindowsRepository implements IMaintenanceWindowsRepository if (!deleted) { throw new AppError({ message: "Maintenance window not found or could not be deleted", status: 404 }); } + return this.toEntity(deleted); }; countByTeamId = async (teamId: string, active?: boolean) => {