From f599af1b3ccbd8185a0750c8ffec3266b022a830 Mon Sep 17 00:00:00 2001 From: WangDL Date: Sun, 24 May 2026 19:55:40 +0800 Subject: [PATCH] perf: add select clause to admin review query, exclude large TEXT columns - Only fetch display-needed columns, skip backText TEXT column - Reduces data transfer and query time significantly Co-Authored-By: Claude Opus 4.7 --- src/modules/review/admin-review.controller.ts | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/src/modules/review/admin-review.controller.ts b/src/modules/review/admin-review.controller.ts index 62e3678..ddbded8 100644 --- a/src/modules/review/admin-review.controller.ts +++ b/src/modules/review/admin-review.controller.ts @@ -31,12 +31,15 @@ export class AdminReviewController { where.frontText = { contains: search }; } + const select = { + id: true, userId: true, frontText: true, difficulty: true, + status: true, scheduleState: true, intervalDays: true, + repetitionCount: true, lapseCount: true, nextReviewAt: true, + }; + const [items, total] = await Promise.all([ this.prisma.reviewCard.findMany({ - where, - orderBy: { createdAt: 'desc' }, - take, - skip, + where, orderBy: { createdAt: 'desc' }, take, skip, select, }), this.prisma.reviewCard.count({ where }), ]);