From dc4464c19a86ebbb011cdb24138a6c5908318e5b Mon Sep 17 00:00:00 2001 From: undefined Date: Sun, 10 Oct 2021 19:49:57 +0800 Subject: [PATCH] core: flush discussion node before re-init --- packages/hydrooj/package.json | 2 +- packages/hydrooj/src/handler/contest.ts | 4 ++-- packages/hydrooj/src/handler/domain.ts | 1 + packages/hydrooj/src/model/discussion.ts | 5 +++++ 4 files changed, 9 insertions(+), 3 deletions(-) diff --git a/packages/hydrooj/package.json b/packages/hydrooj/package.json index 6137f25c5..033d4476a 100644 --- a/packages/hydrooj/package.json +++ b/packages/hydrooj/package.json @@ -1,6 +1,6 @@ { "name": "hydrooj", - "version": "2.39.14", + "version": "2.39.15", "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 5eab15ccb..3b6561b12 100644 --- a/packages/hydrooj/src/handler/contest.ts +++ b/packages/hydrooj/src/handler/contest.ts @@ -99,7 +99,7 @@ export class ContestDetailHandler extends Handler { } } -export class ContestBoardcastHandler extends Handler { +export class ContestBroadcastHandler extends Handler { @param('tid', Types.ObjectID) async get(domainId: string, tid: ObjectID) { const tdoc = await contest.get(domainId, tid); @@ -435,7 +435,7 @@ export async function apply() { Route('contest_create', '/contest/create', ContestEditHandler); Route('contest_main', '/contest', ContestListHandler, PERM.PERM_VIEW_CONTEST); Route('contest_detail', '/contest/:tid', ContestDetailHandler, PERM.PERM_VIEW_CONTEST); - Route('contest_broadcast', '/contest/:tid/broadcast', ContestBoardcastHandler); + Route('contest_broadcast', '/contest/:tid/broadcast', ContestBroadcastHandler); Route('contest_edit', '/contest/:tid/edit', ContestEditHandler, PERM.PERM_VIEW_CONTEST); Route('contest_scoreboard', '/contest/:tid/scoreboard', ContestScoreboardHandler, PERM.PERM_VIEW_CONTEST); Route('contest_scoreboard_download', '/contest/:tid/export/:ext', ContestScoreboardDownloadHandler, PERM.PERM_VIEW_CONTEST); diff --git a/packages/hydrooj/src/handler/domain.ts b/packages/hydrooj/src/handler/domain.ts index 2a0e6724c..a082dc052 100644 --- a/packages/hydrooj/src/handler/domain.ts +++ b/packages/hydrooj/src/handler/domain.ts @@ -72,6 +72,7 @@ class DomainDashboardHandler extends ManageHandler { async postInitDiscussionNode({ domainId }) { const nodes = load(system.get('discussion.nodes')); + await discussion.flushNodes(domainId); for (const category of Object.keys(nodes)) { for (const item of nodes[category]) { // eslint-disable-next-line no-await-in-loop diff --git a/packages/hydrooj/src/model/discussion.ts b/packages/hydrooj/src/model/discussion.ts index 23e7d909d..2c7dcfcd8 100644 --- a/packages/hydrooj/src/model/discussion.ts +++ b/packages/hydrooj/src/model/discussion.ts @@ -243,6 +243,10 @@ export function getNode(domainId: string, _id: string) { return document.get(domainId, document.TYPE_DISCUSSION_NODE, _id); } +export function flushNodes(domainId: string) { + return document.deleteMulti(domainId, document.TYPE_DISCUSSION_NODE); +} + export async function getVnode(domainId: string, type: number, id: string, uid?: number) { if (type === document.TYPE_PROBLEM) { const pdoc = await problem.get(domainId, Number.isSafeInteger(+id) ? +id : id); @@ -360,6 +364,7 @@ global.Hydro.model.discussion = { setStatus, addNode, getNode, + flushNodes, getNodes, getVnode, getListVnodes,