diff --git a/packages/hydrooj/package.json b/packages/hydrooj/package.json index 5720e8dfb..ba6f42823 100644 --- a/packages/hydrooj/package.json +++ b/packages/hydrooj/package.json @@ -1,6 +1,6 @@ { "name": "hydrooj", - "version": "3.1.31", + "version": "3.1.32", "bin": "bin/hydrooj.js", "main": "src/loader", "module": "src/loader", diff --git a/packages/hydrooj/src/model/discussion.ts b/packages/hydrooj/src/model/discussion.ts index 27589d96f..10945f090 100644 --- a/packages/hydrooj/src/model/discussion.ts +++ b/packages/hydrooj/src/model/discussion.ts @@ -250,7 +250,7 @@ export async function getVnode(domainId: string, type: number, id: string, uid?: if (type === document.TYPE_PROBLEM) { const pdoc = await problem.get(domainId, Number.isSafeInteger(+id) ? +id : id); if (!pdoc) throw new DiscussionNodeNotFoundError(id); - return { ...pdoc, type, id }; + return { ...pdoc, type, id: pdoc.docId }; } if ([document.TYPE_CONTEST, document.TYPE_TRAINING, document.TYPE_HOMEWORK].includes(type as any)) { const model = type === document.TYPE_TRAINING ? training : contest; diff --git a/packages/hydrooj/src/upgrade.ts b/packages/hydrooj/src/upgrade.ts index 859bd5f19..fe67023e9 100644 --- a/packages/hydrooj/src/upgrade.ts +++ b/packages/hydrooj/src/upgrade.ts @@ -634,6 +634,20 @@ const scripts: UpgradeScript[] = [ } return true; }, + async function _53_54() { + const _FRESH_INSTALL_IGNORE = 1; + let ddocs = await db.collection('document').find({ docType: 21, parentType: 10 }) + .project({ _id: 1, parentId: 1 }).toArray(); + ddocs = ddocs.filter((i) => Number.isSafeInteger(+i.parentId)); + if (ddocs.length) { + const bulk = db.collection('document').initializeUnorderedBulkOp(); + for (const ddoc of ddocs) { + bulk.find({ _id: ddoc._id }).updateOne({ $set: { parentId: +ddoc.parentId } }); + } + await bulk.execute(); + } + return true; + }, ]; export default scripts;