From 0a8617b0eef751621115babb9493e4c0d2e357de Mon Sep 17 00:00:00 2001 From: mukundangopalachary Date: Wed, 15 Apr 2026 10:29:45 +0530 Subject: [PATCH] fix: migrate lastReultHashes typo to lastResultHashes safely --- backend/src/api/controllers/result.ts | 2 +- backend/src/api/controllers/user.ts | 6 ++++-- backend/src/dal/user.ts | 5 ++++- packages/schemas/src/users.ts | 3 ++- 4 files changed, 11 insertions(+), 5 deletions(-) diff --git a/backend/src/api/controllers/result.ts b/backend/src/api/controllers/result.ts index 996e1746b69b..6e20edb458ef 100644 --- a/backend/src/api/controllers/result.ts +++ b/backend/src/api/controllers/result.ts @@ -402,7 +402,7 @@ export async function addResult( } if (req.ctx.configuration.users.lastHashesCheck.enabled) { - let lastHashes = user.lastReultHashes ?? []; + let lastHashes = user.lastResultHashes ?? user.lastReultHashes ?? []; if (lastHashes.includes(resulthash)) { void addLog( "duplicate_result", diff --git a/backend/src/api/controllers/user.ts b/backend/src/api/controllers/user.ts index 964602852f10..0fdd3d69e436 100644 --- a/backend/src/api/controllers/user.ts +++ b/backend/src/api/controllers/user.ts @@ -509,7 +509,8 @@ type RelevantUserInfo = Omit< | "nameHistory" | "lastNameChange" | "_id" - | "lastReultHashes" //TODO fix typo + | "lastResultHashes" + | "lastReultHashes" | "note" | "ips" | "testActivity" @@ -524,7 +525,8 @@ function getRelevantUserInfo(user: UserDAL.DBUser): RelevantUserInfo { "nameHistory", "lastNameChange", "_id", - "lastReultHashes", //TODO fix typo + "lastResultHashes", + "lastReultHashes", "note", "ips", "testActivity", diff --git a/backend/src/dal/user.ts b/backend/src/dal/user.ts index 8349bf8bb674..d8fa5c4a44db 100644 --- a/backend/src/dal/user.ts +++ b/backend/src/dal/user.ts @@ -589,7 +589,10 @@ export async function updateLastHashes( { uid }, { $set: { - lastReultHashes: lastHashes, //TODO fix typo + lastResultHashes: lastHashes, + }, + $unset: { + lastReultHashes: 1, }, }, ); diff --git a/packages/schemas/src/users.ts b/packages/schemas/src/users.ts index 80286ce739c5..f6e0d4019965 100644 --- a/packages/schemas/src/users.ts +++ b/packages/schemas/src/users.ts @@ -243,7 +243,8 @@ export const UserSchema = z.object({ uid: z.string(), //defined by firebase, no validation should be applied addedAt: z.number().int().nonnegative(), personalBests: PersonalBestsSchema, - lastReultHashes: z.array(z.string()).optional(), //TODO: fix typo (it's in the db too) + lastResultHashes: z.array(z.string()).optional(), + lastReultHashes: z.array(z.string()).optional(), //legacy typo, kept for backwards compatibility completedTests: z.number().int().nonnegative().optional(), startedTests: z.number().int().nonnegative().optional(), timeTyping: z