From 9716e7caa283aabc463f5e7a895f7f593657cef6 Mon Sep 17 00:00:00 2001 From: undefined Date: Mon, 20 Sep 2021 18:08:50 +0800 Subject: [PATCH] core: fix contest storage get --- packages/hydrooj/package.json | 2 +- packages/hydrooj/src/handler/contest.ts | 2 +- packages/hydrooj/src/handler/record.ts | 9 +++++++-- 3 files changed, 9 insertions(+), 4 deletions(-) diff --git a/packages/hydrooj/package.json b/packages/hydrooj/package.json index 8b5f7b5dd..44ffa4f78 100644 --- a/packages/hydrooj/package.json +++ b/packages/hydrooj/package.json @@ -1,6 +1,6 @@ { "name": "hydrooj", - "version": "2.36.8", + "version": "2.36.9", "bin": "bin/hydrooj.js", "main": "src/loader", "module": "src/loader", diff --git a/packages/hydrooj/src/handler/contest.ts b/packages/hydrooj/src/handler/contest.ts index 7af2bdb0e..f8b741c52 100644 --- a/packages/hydrooj/src/handler/contest.ts +++ b/packages/hydrooj/src/handler/contest.ts @@ -20,13 +20,13 @@ import domain from '../model/domain'; import message from '../model/message'; import problem from '../model/problem'; import record from '../model/record'; +import storage from '../model/storage'; import * as system from '../model/system'; import user from '../model/user'; import * as bus from '../service/bus'; import { Handler, param, Route, Types, } from '../service/server'; -import storage from '../service/storage'; export class ContestListHandler extends Handler { @param('rule', Types.Range(contest.RULES), true) diff --git a/packages/hydrooj/src/handler/record.ts b/packages/hydrooj/src/handler/record.ts index 494fdf5c6..5707a05a6 100644 --- a/packages/hydrooj/src/handler/record.ts +++ b/packages/hydrooj/src/handler/record.ts @@ -45,10 +45,15 @@ class RecordListHandler extends Handler { } } if (uidOrName) { - const udoc = await user.getById(domainId, +uidOrName) ?? await user.getByUname(domainId, uidOrName); + const udoc = await user.getById(domainId, +uidOrName) + || await user.getByUname(domainId, uidOrName) + || await user.getByEmail(domainId, uidOrName); if (udoc) q.uid = udoc._id; else invalid = true; } + if (pid && tdoc && /^[A-Z]$/.test(pid)) { + pid = tdoc.pids[parseInt(pid, 36) - 10]; + } if (pid) { const pdoc = await problem.get(domainId, pid); if (pdoc) q.pid = pdoc.docId; @@ -62,7 +67,7 @@ class RecordListHandler extends Handler { if (!full) cursor = cursor.project(buildProjection(record.PROJECTION_LIST)); const limit = full ? 10 : system.get('pagination.record'); const rdocs = invalid - ? [[] as RecordDoc[]] + ? [] as RecordDoc[] : await cursor.skip((page - 1) * limit).limit(limit).toArray(); const canViewProblem = this.user.hasPerm(PERM.PERM_VIEW_PROBLEM); const canViewProblemHidden = (!!tid) || this.user.hasPerm(PERM.PERM_VIEW_PROBLEM_HIDDEN);