From 1b89677456b97cbc79673fceffdb4de5aa3b0671 Mon Sep 17 00:00:00 2001 From: undefined Date: Sun, 2 Apr 2023 03:07:41 +0800 Subject: [PATCH] core: bug fix --- packages/hydrooj/package.json | 2 +- packages/hydrooj/src/model/contest.ts | 3 +++ packages/hydrooj/src/service/layers/domain.ts | 2 +- packages/hydrooj/src/upgrade.ts | 16 ++++++++++++++++ 4 files changed, 21 insertions(+), 2 deletions(-) diff --git a/packages/hydrooj/package.json b/packages/hydrooj/package.json index 497d56d93..b25c8ae7c 100644 --- a/packages/hydrooj/package.json +++ b/packages/hydrooj/package.json @@ -1,6 +1,6 @@ { "name": "hydrooj", - "version": "4.9.8", + "version": "4.9.9", "bin": "bin/hydrooj.js", "main": "src/plugin-api", "module": "src/plugin-api", diff --git a/packages/hydrooj/src/model/contest.ts b/packages/hydrooj/src/model/contest.ts index ea09fa402..c7ab1744a 100644 --- a/packages/hydrooj/src/model/contest.ts +++ b/packages/hydrooj/src/model/contest.ts @@ -76,6 +76,9 @@ const acm = buildContestRule({ } if (lockAt && j.rid.getTimestamp() > lockAt) { npending[j.pid]++; + // FIXME this is tricky + // @ts-ignore + display[j.pid] ||= {}; display[j.pid].npending = npending[j.pid]; continue; } diff --git a/packages/hydrooj/src/service/layers/domain.ts b/packages/hydrooj/src/service/layers/domain.ts index 0c5cfc24b..2665cbe4f 100644 --- a/packages/hydrooj/src/service/layers/domain.ts +++ b/packages/hydrooj/src/service/layers/domain.ts @@ -23,6 +23,6 @@ export default async (ctx: KoaContext, next) => { } ctx.domainId = inferDomain?._id || domainId; ctx.domainInfo = inferDomain || absoluteDomain; - if (domainId !== ctx.domainInfo._id) ctx.redirect(ctx.originalPath.replace(/^\/d\/[^/]+\//, `/d/${ctx.domainInfo._id}/`)); + if (ctx.domainId !== ctx.domainInfo._id) ctx.redirect(ctx.originalPath.replace(/^\/d\/[^/]+\//, `/d/${ctx.domainInfo._id}/`)); else await next(); }; diff --git a/packages/hydrooj/src/upgrade.ts b/packages/hydrooj/src/upgrade.ts index 1a62c94b3..df0b04f37 100644 --- a/packages/hydrooj/src/upgrade.ts +++ b/packages/hydrooj/src/upgrade.ts @@ -555,6 +555,22 @@ const scripts: UpgradeScript[] = [ await document.coll.updateMany({ docType: document.TYPE_DISCUSSION }, { $set: { hidden: false } }); return true; }, + async function _78_79() { + const t = await document.collStatus.find({ + docType: document.TYPE_CONTEST, journal: { $elemMatch: { rid: null } }, + }).toArray(); + for (const r of t) { + r.journal = r.journal.filter((i) => i.rid !== null); + await document.collStatus.updateOne({ _id: r._id }, { $set: { journal: r.journal } }); + } + await iterateAllContest(async (tdoc) => { + if (tdoc.rule !== 'acm') return; + logger.info(tdoc.domainId, tdoc.title); + await contest.recalcStatus(tdoc.domainId, tdoc.docId); + if (contest.isDone(tdoc)) await contest.unlockScoreboard(tdoc.domainId, tdoc.docId); + }); + return true; + }, ]; export default scripts;