From 8582de25607a477aea0023162b59c33815b28734 Mon Sep 17 00:00:00 2001 From: undefined Date: Fri, 20 May 2022 09:11:56 +0800 Subject: [PATCH] migrate: add optional solution field --- packages/migrate/package.json | 8 +++++--- packages/migrate/scripts/hustoj.ts | 13 +++++++++++++ 2 files changed, 18 insertions(+), 3 deletions(-) diff --git a/packages/migrate/package.json b/packages/migrate/package.json index 9da63c31..c59af13c 100644 --- a/packages/migrate/package.json +++ b/packages/migrate/package.json @@ -1,17 +1,19 @@ { "name": "@hydrooj/migrate", - "version": "0.1.0", + "version": "0.1.1", "main": "package.json", "repository": "git@github.com:hydro-dev/Hydro.git", "author": "undefined ", "license": "AGPL-3.0-or-later", "devDependencies": { "@types/mongodb": "^3.6.20", - "@types/mysql": "^2.15.21" + "@types/mysql": "^2.15.21", + "@types/turndown": "^5.0.1" }, "dependencies": { "@hydrooj/utils": "workspace:*", "mongodb": "^3.7.3", - "mysql": "^2.18.1" + "mysql": "^2.18.1", + "turndown": "^7.1.1" } } diff --git a/packages/migrate/scripts/hustoj.ts b/packages/migrate/scripts/hustoj.ts index b1bd1cdc..06c7c026 100644 --- a/packages/migrate/scripts/hustoj.ts +++ b/packages/migrate/scripts/hustoj.ts @@ -3,6 +3,7 @@ import fs from 'fs-extra'; import { ObjectID } from 'mongodb'; import mysql from 'mysql'; +import TurndownService from 'turndown'; import { STATUS } from '@hydrooj/utils/lib/status'; import { noop, Time } from '@hydrooj/utils/lib/utils'; import { NotFoundError } from 'hydrooj/src/error'; @@ -13,9 +14,15 @@ import * as contest from 'hydrooj/src/model/contest'; import domain from 'hydrooj/src/model/domain'; import problem from 'hydrooj/src/model/problem'; import record from 'hydrooj/src/model/record'; +import SolutionModel from 'hydrooj/src/model/solution'; import * as system from 'hydrooj/src/model/system'; import user from 'hydrooj/src/model/user'; +const turndown = new TurndownService({ + codeBlockStyle: 'fenced', + bulletListMarker: '-', +}); + const statusMap = { 4: STATUS.STATUS_ACCEPTED, 5: STATUS.STATUS_WRONG_ANSWER, @@ -145,6 +152,8 @@ export async function run({ accepted int 11 Y 总ac次数 submit int 11 Y 总提交次数 solved int 11 Y 解答(未用) + + solution #optional */ const pidMap: Record = {}; const [[{ 'count(*)': pcount }]] = await query('SELECT count(*) FROM `problem`'); @@ -183,6 +192,10 @@ export async function run({ maintainer, html: true, }); + if (pdoc.solution) { + const md = turndown.turndown(pdoc.solution); + await SolutionModel.add(domainId, pidMap[pdoc.problem_id], 1, md); + } } }