From a9b2f68d2d9bf180d7ea05dfe0cd2e8867e71cc8 Mon Sep 17 00:00:00 2001 From: panda Date: Wed, 20 Sep 2023 21:42:22 +0800 Subject: [PATCH] core: fix contest discussion parentId (#662) --- packages/hydrooj/src/model/discussion.ts | 2 +- packages/hydrooj/src/upgrade.ts | 14 ++++++++++++++ 2 files changed, 15 insertions(+), 1 deletion(-) diff --git a/packages/hydrooj/src/model/discussion.ts b/packages/hydrooj/src/model/discussion.ts index 6ee3d34c9..c0eba89a6 100644 --- a/packages/hydrooj/src/model/discussion.ts +++ b/packages/hydrooj/src/model/discussion.ts @@ -288,7 +288,7 @@ export async function getVnode(domainId: string, type: number, id: string, uid?: tdoc.attend = tsdoc?.attend || tsdoc?.enroll; } return { - ...tdoc, type, id, hidden: false, + ...tdoc, type, id: _id, hidden: false, }; } return { diff --git a/packages/hydrooj/src/upgrade.ts b/packages/hydrooj/src/upgrade.ts index bbcbcccbe..1820ee9ab 100644 --- a/packages/hydrooj/src/upgrade.ts +++ b/packages/hydrooj/src/upgrade.ts @@ -616,6 +616,20 @@ const scripts: UpgradeScript[] = [ } return true; }, + async function _84_85() { + return await iterateAllDomain(async ({ _id }) => { + const cursor = discussion.getMulti(_id, { parentType: document.TYPE_CONTEST }); + for await (const ddoc of cursor) { + const parentId = new ObjectId(ddoc.parentId); + await discussion.edit(_id, ddoc.docId, { parentId }); + try { + await contest.get(_id, parentId); + } catch (e) { + await discussion.del(_id, ddoc.docId); + } + } + }); + }, ]; export default scripts;