From b4d77d3a2a87fc276b10a8524fc6953571a1b7a4 Mon Sep 17 00:00:00 2001 From: undefined Date: Sun, 25 Jul 2021 21:50:41 +0800 Subject: [PATCH] core: fix document.status unique key --- packages/hydrooj/package.json | 2 +- packages/hydrooj/src/model/document.ts | 2 +- packages/hydrooj/src/upgrade.ts | 12 ++++++++++++ packages/ui-default/package.json | 2 +- .../templates/partials/contest_sidebar.html | 2 +- 5 files changed, 16 insertions(+), 4 deletions(-) diff --git a/packages/hydrooj/package.json b/packages/hydrooj/package.json index 8528f3b63..5d2b828c5 100644 --- a/packages/hydrooj/package.json +++ b/packages/hydrooj/package.json @@ -1,6 +1,6 @@ { "name": "hydrooj", - "version": "2.29.41", + "version": "2.29.42", "bin": "bin/hydrooj.js", "main": "dist/loader.js", "typings": "dist/loader.d.ts", diff --git a/packages/hydrooj/src/model/document.ts b/packages/hydrooj/src/model/document.ts index 5853c751d..9b3e44f3f 100644 --- a/packages/hydrooj/src/model/document.ts +++ b/packages/hydrooj/src/model/document.ts @@ -404,7 +404,7 @@ export async function revSetStatus( async function ensureIndexes() { const ic = coll.createIndex.bind(coll); - const is = collStatus.createIndex.bind(coll); + const is = collStatus.createIndex.bind(collStatus); const u = { unique: true }; const s = { sparse: true }; await ic({ domainId: 1, docType: 1, docId: 1 }, u); diff --git a/packages/hydrooj/src/upgrade.ts b/packages/hydrooj/src/upgrade.ts index 57ba1b45c..18f9edf75 100644 --- a/packages/hydrooj/src/upgrade.ts +++ b/packages/hydrooj/src/upgrade.ts @@ -402,6 +402,18 @@ const scripts: UpgradeScript[] = [ await RecordModel.coll.updateMany({}, { $unset: { effective: '' } }); return true; }, + async function _36_37() { + const _FRESH_INSTALL_IGNORE = 1; + const cur = document.collStatus.find(); + while (await cur.hasNext()) { + const doc = await cur.next(); + await document.collStatus.deleteMany({ + ...pick(doc, ['docId', 'domainId', 'uid', 'docType']), + _id: { $gt: doc._id }, + }); + } + return true; + }, ]; export default scripts; diff --git a/packages/ui-default/package.json b/packages/ui-default/package.json index 8d2338be4..d53fe32a5 100644 --- a/packages/ui-default/package.json +++ b/packages/ui-default/package.json @@ -1,6 +1,6 @@ { "name": "@hydrooj/ui-default", - "version": "4.13.3", + "version": "4.13.4", "author": "undefined ", "license": "AGPL-3.0", "main": "hydro.js", diff --git a/packages/ui-default/templates/partials/contest_sidebar.html b/packages/ui-default/templates/partials/contest_sidebar.html index 1c3ce9648..6065ae8ac 100644 --- a/packages/ui-default/templates/partials/contest_sidebar.html +++ b/packages/ui-default/templates/partials/contest_sidebar.html @@ -38,7 +38,7 @@ {{ _('View Contest') }} {% endif %} - {% if not attended and not model.contest.isDone(tdoc) %} + {% if not (attended or tdoc.attended) and not model.contest.isDone(tdoc) %}