diff --git a/packages/hydrooj/src/model/discussion.ts b/packages/hydrooj/src/model/discussion.ts index 6ee3d34c..c0eba89a 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 bbcbcccb..1820ee9a 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;