mirror of
https://gitcode.com/gh_mirrors/hy/Hydro.git
synced 2026-10-20 01:38:19 +08:00
core: 保留比赛题目顺序
This commit is contained in:
1 parent
41219ef147
commit
6dfeede6d6
5 files changed
+25
-26
No files matched your search
@@ -569,22 +569,15 @@ export async function getScoreboard(
|
||||
const tdoc = await get(domainId, tid, docType);
|
||||
if (!canShowScoreboard.call(this, tdoc)) throw new ContestScoreboardHiddenError(tid);
|
||||
if (!canShowRecord.call(this, tdoc)) throw new ContestScoreboardHiddenError(tid);
|
||||
const tsdocs = await getMultiStatus(domainId, { docId: tid }, docType).sort(RULES[tdoc.rule].statusSort);
|
||||
const tsdocsCursor = getMultiStatus(domainId, { docId: tid }, docType).sort(RULES[tdoc.rule].statusSort);
|
||||
const pdict = await problem.getList(domainId, tdoc.pids, true);
|
||||
const [rows, udict, nPages] = await RULES[tdoc.rule].scoreboard(
|
||||
isExport, this.translate.bind(this),
|
||||
tdoc, pdict, tsdocs, page,
|
||||
tdoc, pdict, tsdocsCursor, page,
|
||||
);
|
||||
return [tdoc, rows, udict, pdict, nPages];
|
||||
}
|
||||
|
||||
export async function verifyProblems(domainId: string, pids: Array<number | string>) {
|
||||
const pdict = await problem.getList(domainId, pids, true);
|
||||
const _pids: Set<number> = new Set();
|
||||
for (const i in pdict) _pids.add(pdict[i].docId);
|
||||
return Array.from(_pids);
|
||||
}
|
||||
|
||||
export const statusText = (tdoc: Tdoc) => (
|
||||
isNew(tdoc)
|
||||
? 'New'
|
||||
@@ -621,7 +614,6 @@ global.Hydro.model.contest = {
|
||||
canShowScoreboard,
|
||||
canViewHiddenScoreboard,
|
||||
getScoreboard,
|
||||
verifyProblems,
|
||||
isNew,
|
||||
isUpcoming,
|
||||
isNotStarted,
|
||||
|
||||
@@ -2,6 +2,7 @@ import { escapeRegExp } from 'lodash';
|
||||
import { ItemBucketMetadata } from 'minio';
|
||||
import moment from 'moment';
|
||||
import type { Readable } from 'stream';
|
||||
import TaskModel from './task';
|
||||
import storage from '../service/storage';
|
||||
import * as bus from '../service/bus';
|
||||
import db from '../service/db';
|
||||
@@ -76,19 +77,25 @@ export class StorageModel {
|
||||
}
|
||||
}
|
||||
|
||||
async function clean() {
|
||||
async function cleanFiles() {
|
||||
let res = await StorageModel.coll.findOneAndDelete({ autoDelete: { $lte: new Date() } });
|
||||
while (res.value) {
|
||||
// eslint-disable-next-line no-await-in-loop
|
||||
// await storage.del(res.value._id);
|
||||
await storage.del(res.value._id);
|
||||
// eslint-disable-next-line no-await-in-loop
|
||||
res = await StorageModel.coll.findOneAndDelete({ autoDelete: { $lte: new Date() } });
|
||||
}
|
||||
setTimeout(clean, 10000);
|
||||
}
|
||||
bus.on('app/started', () => {
|
||||
clean();
|
||||
return StorageModel.coll.createIndex({ path: 1 }, { unique: true });
|
||||
TaskModel.Worker.addHandler('storage.prune', cleanFiles);
|
||||
bus.once('app/started', async () => {
|
||||
if (!await TaskModel.count({ type: 'schedule', subType: 'storage.prune' })) {
|
||||
await TaskModel.add({
|
||||
type: 'schedule',
|
||||
subType: 'storage.prune',
|
||||
executeAfter: moment().minute(0).second(0).millisecond(0).toDate(),
|
||||
interval: [1, 'hour'],
|
||||
});
|
||||
}
|
||||
});
|
||||
|
||||
global.Hydro.model.storage = StorageModel;
|
||||
|
||||
Reference in new issue
Block a user