From 391eb96b22ac70df556cd6ebcb6e1b1ae7f0bf36 Mon Sep 17 00:00:00 2001 From: undefined Date: Mon, 8 Mar 2021 19:29:04 +0800 Subject: [PATCH] core: fix problem_edit returns null --- packages/hydrooj/package.json | 2 +- packages/hydrooj/src/handler/problem.ts | 6 +++--- packages/hydrooj/src/upgrade.ts | 6 ++++++ 3 files changed, 10 insertions(+), 4 deletions(-) diff --git a/packages/hydrooj/package.json b/packages/hydrooj/package.json index 9507b3e18..fdee44c93 100644 --- a/packages/hydrooj/package.json +++ b/packages/hydrooj/package.json @@ -1,6 +1,6 @@ { "name": "hydrooj", - "version": "2.20.15", + "version": "2.20.16", "bin": "bin/hydrooj.js", "main": "dist/loader.js", "typings": "dist/loader.d.ts", diff --git a/packages/hydrooj/src/handler/problem.ts b/packages/hydrooj/src/handler/problem.ts index b2f0b4561..c3d39f8c7 100644 --- a/packages/hydrooj/src/handler/problem.ts +++ b/packages/hydrooj/src/handler/problem.ts @@ -323,14 +323,14 @@ export class ProblemEditHandler extends ProblemManageHandler { @post('tag', Types.String, true, null, parseCategory) async post( domainId: string, pid: string | number, title: string, content: string, - newPid: string = '', hidden = false, tag: string[], + newPid: string = '', hidden = false, tag: string[] = [], ) { try { content = JSON.parse(content); } catch { /* Ignore */ } if (newPid !== this.pdoc.pid && await problem.get(domainId, newPid)) throw new BadRequestError('new pid exists'); const $update: Partial = { - title, content, pid: newPid, hidden, tag, + title, content, pid: newPid, hidden, tag: tag ?? [], }; let pdoc = await problem.get(domainId, pid); await bus.serial('problem/before-edit', $update); @@ -560,7 +560,7 @@ export class ProblemCreateHandler extends Handler { content = JSON.parse(content); } catch { /* Ignore */ } if (pid && await problem.get(domainId, pid)) throw new BadRequestError('invalid pid'); - const docId = await problem.add(domainId, pid, title, content, this.user._id, tag, hidden); + const docId = await problem.add(domainId, pid, title, content, this.user._id, tag ?? [], hidden); this.response.body = { pid: pid || docId }; this.response.redirect = this.url('problem_files', { pid: pid || docId }); } diff --git a/packages/hydrooj/src/upgrade.ts b/packages/hydrooj/src/upgrade.ts index 3c99c967c..35f33e3a1 100644 --- a/packages/hydrooj/src/upgrade.ts +++ b/packages/hydrooj/src/upgrade.ts @@ -200,6 +200,12 @@ const scripts: UpgradeScript[] = [ }); return true; }, + // Set null tag to [] + async function _9_10() { + const _FRESH_INSTALL_IGNORE = 1; + await db.collection('document').updateMany({ docType: 10, tag: null }, { $set: { tag: [] } }); + return true; + }, ]; export = scripts;