Skip to content

Commit 9054773

Browse files
Refactor user model relations and enhance caching logic in roadmap controller
1 parent 1cd5ced commit 9054773

6 files changed

Lines changed: 11 additions & 12 deletions

File tree

client/tsconfig.app.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
"module": "ESNext",
88
"skipLibCheck": true,
99
"forceConsistentCasingInFileNames": true,
10-
"ignoreDeprecations": "6.0",
10+
"ignoreDeprecations": "5.0",
1111

1212
/* Bundler mode */
1313
"moduleResolution": "bundler",

server/src/database/prisma/schema/base.prisma

Lines changed: 3 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -82,12 +82,9 @@ model user {
8282
roadmapEnrollments roadmapEnrollment[] @relation("UserRoadmapEnrollments")
8383
scheduledEmails scheduledEmail[] @relation("UserScheduledEmails")
8484
privateRoadmaps roadmap[] @relation("UserPrivateRoadmaps")
85-
generatedResumes generatedResume[] @relation("UserGeneratedResumes")
86-
leetcodeImports leetcodeImportLog[] @relation("UserLeetcodeImports")
87-
roadmapEnrollments roadmapEnrollment[] @relation("UserRoadmapEnrollments")
88-
scheduledEmails scheduledEmail[] @relation("UserScheduledEmails")
89-
privateRoadmaps roadmap[] @relation("UserPrivateRoadmaps")
90-
generatedCoverLetters generatedCoverLetter[] @relation("StudentCoverLetters")
85+
generatedResumes generatedResume[] @relation("UserGeneratedResumes")
86+
leetcodeImports leetcodeImportLog[] @relation("UserLeetcodeImports")
87+
generatedCoverLetters generatedCoverLetter[] @relation("StudentCoverLetters")
9188
9289
@@index([role])
9390
@@index([role, isActive])

server/src/middleware/cache.middleware.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ export const cacheMiddleware = (ttl: number = 300, keyPrefix: string = "cache")
1818

1919
const originalJson = res.json;
2020
res.json = function (data) {
21-
if (res.statusCode >= 200 && res.statusCode < 300) {
21+
if (res.statusCode >= 200 && res.statusCode < 300 && !res.locals["skipCache"]) {
2222
appCache.set(key, data, ttl);
2323
}
2424
res.setHeader("X-Cache", "MISS");

server/src/module/dsa/dsa-import.service.ts

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -136,14 +136,16 @@ async function loadCatalog() {
136136
const byLcId = new Map<number, typeof problems[0]>();
137137
const bySlug = new Map<string, typeof problems[0]>();
138138
const byNormTitle = new Map<string, typeof problems[0]>();
139+
const byId = new Map<number, typeof problems[0]>();
139140

140141
for (const p of problems) {
141142
if (p.leetcodeId) byLcId.set(p.leetcodeId, p);
142143
bySlug.set(p.slug, p);
143144
byNormTitle.set(normalizeTitle(p.title), p);
145+
byId.set(p.id, p);
144146
}
145147

146-
return { byLcId, bySlug, byNormTitle };
148+
return { byLcId, bySlug, byNormTitle, byId };
147149
}
148150

149151
function normalizeTitle(t: string) {
@@ -217,9 +219,7 @@ async function buildPreview(
217219

218220
// Build preview items (first 50 for display)
219221
const preview: PreviewItem[] = newRows.slice(0, 50).map((r) => {
220-
// Reverse-lookup the problem info from the catalog maps
221-
const allCatalogByIdArr = [...catalog.bySlug.values()];
222-
const problem = allCatalogByIdArr.find((p) => p.id === r.problemId)!;
222+
const problem = catalog.byId.get(r.problemId)!;
223223
return {
224224
problemId: r.problemId,
225225
title: problem?.title ?? "Unknown",

server/src/module/roadmap/roadmap.controller.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -72,6 +72,7 @@ export async function getRoadmap(req: Request, res: Response, next: NextFunction
7272
res.status(404).json({ message: "Roadmap not found" });
7373
return;
7474
}
75+
res.locals["skipCache"] = true;
7576
}
7677

7778
res.json({ roadmap });

server/src/module/roadmap/roadmap.routes.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@ export const roadmapRouter = Router();
2121
roadmapRouter.post("/ai/generate", authMiddleware, aiRoadmapLimiter, postAiGenerate);
2222
roadmapRouter.get("/me/enrollments", authMiddleware, getMyEnrollments);
2323
roadmapRouter.get("/me/enrollments/:id", authMiddleware, getMyEnrollment);
24+
roadmapRouter.get("/me/enrollments/:id/pdf", authMiddleware, downloadPdf);
2425
roadmapRouter.get("/me/enrollments/:id/certificate", authMiddleware, downloadCertificate);
2526
roadmapRouter.patch(
2627
"/me/enrollments/:id/topics/:topicId",

0 commit comments

Comments
 (0)