diff --git a/server/src/repositories/monitors/IMonitorsRepository.ts b/server/src/repositories/monitors/IMonitorsRepository.ts index 6103132f8..c52ba55c0 100644 --- a/server/src/repositories/monitors/IMonitorsRepository.ts +++ b/server/src/repositories/monitors/IMonitorsRepository.ts @@ -13,6 +13,7 @@ export interface TeamQueryConfig { export interface SummaryConfig { type?: MonitorType | MonitorType[]; + tags?: string | string[]; } export interface IMonitorsRepository { diff --git a/server/src/repositories/monitors/MongoMonitorsRepository.ts b/server/src/repositories/monitors/MongoMonitorsRepository.ts index 24a3cb7d8..10bd57d56 100644 --- a/server/src/repositories/monitors/MongoMonitorsRepository.ts +++ b/server/src/repositories/monitors/MongoMonitorsRepository.ts @@ -292,6 +292,10 @@ class MongoMonitorsRepository implements IMonitorsRepository { if (config?.type !== undefined) { match.type = Array.isArray(config.type) ? { $in: config.type } : config.type; } + if (config?.tags !== undefined) { + const tagIds = (Array.isArray(config.tags) ? config.tags : [config.tags]).map((tag) => new mongoose.Types.ObjectId(tag)); + match.tags = { $in: tagIds }; + } const pipeline = [ { $match: match }, { diff --git a/server/src/service/business/monitorService.ts b/server/src/service/business/monitorService.ts index fc08200c5..2023a1d7a 100644 --- a/server/src/service/business/monitorService.ts +++ b/server/src/service/business/monitorService.ts @@ -391,7 +391,7 @@ export class MonitorService implements IMonitorService { field?: string; order?: "asc" | "desc"; }): Promise => { - const summary = await this.monitorsRepository.findMonitorsSummaryByTeamId(teamId, { type }); + const summary = await this.monitorsRepository.findMonitorsSummaryByTeamId(teamId, { type, tags }); const count = await this.monitorsRepository.findMonitorCountByTeamIdAndType(teamId, { type, tags, filter }); const monitors = await this.monitorsRepository.findByTeamId(teamId, { limit,