From 4c6aeeb9140744f7b139796b55082db6b59298b7 Mon Sep 17 00:00:00 2001 From: undefined Date: Wed, 25 Aug 2021 05:19:33 +0000 Subject: [PATCH] core: delete related ddoc when deleting tdoc --- packages/hydrooj/package.json | 2 +- packages/hydrooj/src/model/contest.ts | 1 + packages/hydrooj/src/upgrade.ts | 12 ++++++++++++ packages/ui-default/handler.js | 18 ++++++++++-------- packages/ui-default/misc/typography.styl | 2 +- packages/ui-default/package.json | 2 +- 6 files changed, 26 insertions(+), 11 deletions(-) diff --git a/packages/hydrooj/package.json b/packages/hydrooj/package.json index 0e96717dc..da29022dd 100644 --- a/packages/hydrooj/package.json +++ b/packages/hydrooj/package.json @@ -1,6 +1,6 @@ { "name": "hydrooj", - "version": "2.33.6", + "version": "2.33.7", "bin": "bin/hydrooj.js", "main": "src/loader", "module": "src/loader", diff --git a/packages/hydrooj/src/model/contest.ts b/packages/hydrooj/src/model/contest.ts index 4aaf8bffd..777e31aaa 100644 --- a/packages/hydrooj/src/model/contest.ts +++ b/packages/hydrooj/src/model/contest.ts @@ -458,6 +458,7 @@ export async function del(domainId: string, tid: ObjectID, type: Type = document await Promise.all([ document.deleteOne(domainId, type, tid), document.deleteMultiStatus(domainId, type, { docId: tid }), + document.deleteMulti(domainId, document.TYPE_DISCUSSION, { parentType: type, parentId: tid }), ]); } diff --git a/packages/hydrooj/src/upgrade.ts b/packages/hydrooj/src/upgrade.ts index dff62a0df..9040da754 100644 --- a/packages/hydrooj/src/upgrade.ts +++ b/packages/hydrooj/src/upgrade.ts @@ -458,6 +458,18 @@ const scripts: UpgradeScript[] = [ ); return true; }, + async function _41_42() { + const _FRESH_INSTALL_IGNORE = 1; + await iterateAllDomain(async (ddoc) => { + const cursor = discussion.getMulti(ddoc._id, { parentType: document.TYPE_CONTEST }); + while (await cursor.hasNext()) { + const doc = await cursor.next(); + const tdoc = await document.coll.findOne({ docType: doc.parentType, docId: doc.parentId }); + if (!tdoc) await discussion.del(ddoc._id, doc.docId); + } + }); + return true; + }, ]; export default scripts; diff --git a/packages/ui-default/handler.js b/packages/ui-default/handler.js index d8f9bfc3e..0fef05edf 100644 --- a/packages/ui-default/handler.js +++ b/packages/ui-default/handler.js @@ -172,14 +172,16 @@ const getHash = (i) => { const getUrl = (files) => files.map((i) => `/${i}?${getHash(i)}`); bus.on('app/started', () => { - const files = readdirSync(join(tmpdir(), 'hydro', 'public')); - const pages = files.filter((file) => file.endsWith('.page.js')); - const themes = files.filter((file) => file.endsWith('.theme.js')); - UiContextBase.extraPages = getUrl(pages); - UiContextBase.themes = {}; - for (const theme of themes) { - UiContextBase.themes[theme] = `/${theme}?${getHash(theme)}`; - } + setTimeout(() => { + const files = readdirSync(join(tmpdir(), 'hydro', 'public')); + const pages = files.filter((file) => file.endsWith('.page.js')); + const themes = files.filter((file) => file.endsWith('.theme.js')); + UiContextBase.extraPages = getUrl(pages); + UiContextBase.themes = {}; + for (const theme of themes) { + UiContextBase.themes[theme] = `/${theme}?${getHash(theme)}`; + } + }, 1000); }); global.Hydro.handler.ui = async () => { diff --git a/packages/ui-default/misc/typography.styl b/packages/ui-default/misc/typography.styl index 77fa4ee4f..fad3e65c5 100644 --- a/packages/ui-default/misc/typography.styl +++ b/packages/ui-default/misc/typography.styl @@ -311,7 +311,7 @@ h1, h2, h3, h4, h5, h6 list-style: decimal margin-left: 1.9em -.typo li ul, .typo li ol +.typo li ol margin-top: 1.2em margin-bottom: 1.2em margin-left: 2em diff --git a/packages/ui-default/package.json b/packages/ui-default/package.json index 779b79448..192fd89a6 100644 --- a/packages/ui-default/package.json +++ b/packages/ui-default/package.json @@ -1,6 +1,6 @@ { "name": "@hydrooj/ui-default", - "version": "4.18.2", + "version": "4.18.3", "author": "undefined ", "license": "AGPL-3.0", "main": "hydro.js",