Skip to content

Commit 3f8198f

Browse files
committed
remove unused indexes
1 parent 658c7c0 commit 3f8198f

File tree

2 files changed

+44
-11
lines changed

2 files changed

+44
-11
lines changed

server/src/db/models/checks/Check.ts

Lines changed: 0 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -315,12 +315,5 @@ CheckSchema.index({
315315
"metadata.monitorId": 1,
316316
createdAt: -1,
317317
});
318-
CheckSchema.index({ "metadata.teamId": 1, status: 1, createdAt: -1 });
319-
CheckSchema.index({
320-
"metadata.teamId": 1,
321-
"metadata.monitorId": 1,
322-
status: 1,
323-
createdAt: -1,
324-
});
325318

326319
export const Check = mongoose.model<ICheck>("Check", CheckSchema);

server/src/services/business/CheckService.ts

Lines changed: 44 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -251,16 +251,56 @@ class CheckService implements ICheckService {
251251
createdAt: { $gte: startDate, $lte: new Date() },
252252
};
253253
}
254-
// Has-more pagination: over-fetch by 1 to infer existence of a next page
254+
255255
const pageSizePlusOne = rowsPerPage + 1;
256256
const docs = await Check.find(match)
257-
.populate({ path: "metadata.monitorId", select: "name" })
258257
.sort({ createdAt: -1 })
259258
.skip(page * rowsPerPage)
260-
.limit(pageSizePlusOne);
259+
.limit(pageSizePlusOne)
260+
.select({
261+
_id: 1,
262+
status: 1,
263+
httpStatusCode: 1,
264+
message: 1,
265+
responseTime: 1,
266+
createdAt: 1,
267+
"metadata.monitorId": 1,
268+
"metadata.teamId": 1,
269+
"metadata.type": 1,
270+
});
261271

262272
const hasMore = docs.length > rowsPerPage;
263-
const checks = hasMore ? docs.slice(0, rowsPerPage) : docs;
273+
const limited = hasMore ? docs.slice(0, rowsPerPage) : docs;
274+
275+
const monitorIds = Array.from(
276+
new Set(
277+
limited
278+
.map((d) => d?.metadata?.monitorId)
279+
.filter((v): v is mongoose.Types.ObjectId => !!v)
280+
.map((v) => v.toString())
281+
)
282+
);
283+
284+
let nameById = new Map<string, string>();
285+
if (monitorIds.length > 0) {
286+
const monitors = await Monitor.find({ _id: { $in: monitorIds } }).select({
287+
_id: 1,
288+
name: 1,
289+
});
290+
nameById = new Map(monitors.map((m) => [m._id.toString(), m.name]));
291+
}
292+
293+
const checks = limited.map((doc) => {
294+
const asObj = doc.toObject();
295+
const idStr = asObj?.metadata?.monitorId?.toString?.() ?? "";
296+
const name = idStr ? nameById.get(idStr) : undefined;
297+
if (name) {
298+
asObj.metadata = asObj.metadata || {};
299+
(asObj.metadata as any).monitorId = { name } as any;
300+
}
301+
return asObj as ICheck;
302+
});
303+
264304
return { checks, hasMore };
265305
};
266306

0 commit comments

Comments
 (0)