diff --git a/packages/hydrooj/package.json b/packages/hydrooj/package.json index f64bfba07..dba32bb0f 100644 --- a/packages/hydrooj/package.json +++ b/packages/hydrooj/package.json @@ -1,6 +1,6 @@ { "name": "hydrooj", - "version": "3.3.19", + "version": "3.3.20", "bin": "bin/hydrooj.js", "main": "src/loader", "module": "src/loader", diff --git a/packages/hydrooj/src/model/problem.ts b/packages/hydrooj/src/model/problem.ts index 07ca0dd2d..986dbde30 100644 --- a/packages/hydrooj/src/model/problem.ts +++ b/packages/hydrooj/src/model/problem.ts @@ -121,12 +121,10 @@ export class ProblemModel { projection: Projection = ProblemModel.PROJECTION_PUBLIC, rawConfig = false, ): Promise { - if (typeof pid !== 'number') { - if (Number.isSafeInteger(parseInt(pid, 10))) pid = parseInt(pid, 10); - } + if (Number.isSafeInteger(+pid)) pid = +pid; const res = typeof pid === 'number' ? await document.get(domainId, document.TYPE_PROBLEM, pid, projection) - : (await document.getMulti(domainId, document.TYPE_PROBLEM, { pid }).toArray())[0]; + : (await document.getMulti(domainId, document.TYPE_PROBLEM, { sort: sortable(pid), pid }).toArray())[0]; if (!res) return null; try { if (!rawConfig) res.config = await parseConfig(res.config); @@ -290,7 +288,7 @@ export class ProblemModel { ): Promise { const r: Record = {}; const l: Record = {}; - const q: any = { $or: [{ docId: { $in: pids } }, { pid: { $in: pids } }] }; + const q: any = { docId: { $in: pids } }; let pdocs = await document.getMulti(domainId, document.TYPE_PROBLEM, q) .project(buildProjection(projection)).toArray(); if (group.length > 0) {