From 4a90ab8e781f010c5088490a07673e2ab53bcb40 Mon Sep 17 00:00:00 2001 From: Alex Holliday Date: Thu, 23 Jul 2026 09:36:06 -0700 Subject: [PATCH] extract pagination --- .../monitors/monitor.repository.mongo.ts | 19 +++++++++---------- 1 file changed, 9 insertions(+), 10 deletions(-) diff --git a/server/src/domain/monitors/monitor.repository.mongo.ts b/server/src/domain/monitors/monitor.repository.mongo.ts index 96db34c15..d9e35855c 100644 --- a/server/src/domain/monitors/monitor.repository.mongo.ts +++ b/server/src/domain/monitors/monitor.repository.mongo.ts @@ -91,27 +91,26 @@ class MongoMonitorsRepository implements IMonitorsRepository { { $project: { stats: 0 } }, ]; - findByTeamId = async (teamId: string, config: TeamQueryConfig): Promise => { + private pageOptions = (config: TeamQueryConfig) => { const { page = 0, rowsPerPage = 0, field = "createdAt", order = "desc" } = config ?? {}; + return { sort: { [field]: order === "asc" ? 1 : -1 } as const, skip: Math.max(page, 0) * rowsPerPage, limit: rowsPerPage }; + }; + + findByTeamId = async (teamId: string, config: TeamQueryConfig): Promise => { const query = this.queryBuilder(config, teamId); - const sort = { [field]: order === "asc" ? 1 : -1 } as const; - const skip = Math.max(page, 0) * rowsPerPage; - const documents = await MonitorModel.find(query).sort(sort).skip(skip).limit(rowsPerPage); + const { sort, skip, limit } = this.pageOptions(config); + const documents = await MonitorModel.find(query).sort(sort).skip(skip).limit(limit); return this.mapDocuments(documents); }; findByTeamIdWithStats = async (teamId: string, config: TeamQueryConfig): Promise => { - const { page = 0, rowsPerPage = 0, field = "createdAt", order = "desc" } = config ?? {}; - + const { sort, skip, limit } = this.pageOptions(config); const query = this.queryBuilder(config, teamId); - const sort = { [field]: order === "asc" ? 1 : -1 } as const; - const skip = Math.max(page, 0) * rowsPerPage; - const pipeline: PipelineStage[] = [ { $match: query }, { $sort: sort }, - ...(rowsPerPage ? [{ $skip: skip }, { $limit: rowsPerPage }] : []), + ...(limit ? [{ $skip: skip }, { $limit: limit }] : []), ...this.uptimeStatsLookupStages, ];