mirror of
https://gitcode.com/gh_mirrors/hy/Hydro.git
synced 2026-10-19 17:38:19 +08:00
core: add lang to tsdoc.journal
This commit is contained in:
2 files changed
+13
-19
No files matched your search
@@ -86,12 +86,8 @@ export async function postJudge(rdoc: RecordDoc) {
|
|||||||
if (rdoc.contest?.toString().startsWith('0'.repeat(23))) return;
|
if (rdoc.contest?.toString().startsWith('0'.repeat(23))) return;
|
||||||
const accept = rdoc.status === builtin.STATUS.STATUS_ACCEPTED;
|
const accept = rdoc.status === builtin.STATUS.STATUS_ACCEPTED;
|
||||||
const updated = await problem.updateStatus(rdoc.domainId, rdoc.pid, rdoc.uid, rdoc._id, rdoc.status, rdoc.score);
|
const updated = await problem.updateStatus(rdoc.domainId, rdoc.pid, rdoc.uid, rdoc._id, rdoc.status, rdoc.score);
|
||||||
if (rdoc.contest) {
|
if (rdoc.contest) await contest.updateStatus(rdoc.domainId, rdoc.contest, rdoc.uid, rdoc._id, rdoc.pid, rdoc);
|
||||||
await contest.updateStatus(
|
else if (accept && updated) await domain.incUserInDomain(rdoc.domainId, rdoc.uid, 'nAccept', 1);
|
||||||
rdoc.domainId, rdoc.contest, rdoc.uid, rdoc._id,
|
|
||||||
rdoc.pid, rdoc.status, rdoc.score, rdoc.subtasks,
|
|
||||||
);
|
|
||||||
} else if (accept && updated) await domain.incUserInDomain(rdoc.domainId, rdoc.uid, 'nAccept', 1);
|
|
||||||
const isNormalSubmission = ![
|
const isNormalSubmission = ![
|
||||||
STATUS.STATUS_ETC, STATUS.STATUS_HACK_SUCCESSFUL, STATUS.STATUS_HACK_UNSUCCESSFUL,
|
STATUS.STATUS_ETC, STATUS.STATUS_HACK_SUCCESSFUL, STATUS.STATUS_HACK_UNSUCCESSFUL,
|
||||||
STATUS.STATUS_FORMAT_ERROR, STATUS.STATUS_SYSTEM_ERROR, STATUS.STATUS_CANCELED,
|
STATUS.STATUS_FORMAT_ERROR, STATUS.STATUS_SYSTEM_ERROR, STATUS.STATUS_CANCELED,
|
||||||
|
|||||||
@@ -849,27 +849,25 @@ export async function getStatus(domainId: string, tid: ObjectId, uid: number) {
|
|||||||
return await document.getStatus(domainId, document.TYPE_CONTEST, tid, uid);
|
return await document.getStatus(domainId, document.TYPE_CONTEST, tid, uid);
|
||||||
}
|
}
|
||||||
|
|
||||||
async function _updateStatus(
|
export async function updateStatus(
|
||||||
tdoc: Tdoc, uid: number, rid: ObjectId, pid: number, status: STATUS, score: number,
|
domainId: string, tid: ObjectId, uid: number, rid: ObjectId, pid: number,
|
||||||
subtasks: Record<number, SubtaskResult>,
|
{
|
||||||
|
status = STATUS.STATUS_WAITING,
|
||||||
|
score = 0,
|
||||||
|
subtasks,
|
||||||
|
lang,
|
||||||
|
}: { status?: STATUS, score?: number, subtasks?: Record<number, SubtaskResult>, lang?: string } = {},
|
||||||
) {
|
) {
|
||||||
|
const tdoc = await get(domainId, tid);
|
||||||
|
if (tdoc.balloon && status === STATUS.STATUS_ACCEPTED) await addBalloon(domainId, tid, uid, rid, pid);
|
||||||
const tsdoc = await document.revPushStatus(tdoc.domainId, document.TYPE_CONTEST, tdoc.docId, uid, 'journal', {
|
const tsdoc = await document.revPushStatus(tdoc.domainId, document.TYPE_CONTEST, tdoc.docId, uid, 'journal', {
|
||||||
rid, pid, status, score, subtasks,
|
rid, pid, status, score, subtasks, lang,
|
||||||
}, 'rid');
|
}, 'rid');
|
||||||
const journal = _getStatusJournal(tsdoc);
|
const journal = _getStatusJournal(tsdoc);
|
||||||
const stats = RULES[tdoc.rule].stat(tdoc, journal);
|
const stats = RULES[tdoc.rule].stat(tdoc, journal);
|
||||||
return await document.revSetStatus(tdoc.domainId, document.TYPE_CONTEST, tdoc.docId, uid, tsdoc.rev, { journal, ...stats });
|
return await document.revSetStatus(tdoc.domainId, document.TYPE_CONTEST, tdoc.docId, uid, tsdoc.rev, { journal, ...stats });
|
||||||
}
|
}
|
||||||
|
|
||||||
export async function updateStatus(
|
|
||||||
domainId: string, tid: ObjectId, uid: number, rid: ObjectId, pid: number,
|
|
||||||
status = STATUS.STATUS_WRONG_ANSWER, score = 0, subtasks: Record<number, SubtaskResult> = {},
|
|
||||||
) {
|
|
||||||
const tdoc = await get(domainId, tid);
|
|
||||||
if (tdoc.balloon && status === STATUS.STATUS_ACCEPTED) await addBalloon(domainId, tid, uid, rid, pid);
|
|
||||||
return await _updateStatus(tdoc, uid, rid, pid, status, score, subtasks);
|
|
||||||
}
|
|
||||||
|
|
||||||
export async function getListStatus(domainId: string, uid: number, tids: ObjectId[]) {
|
export async function getListStatus(domainId: string, uid: number, tids: ObjectId[]) {
|
||||||
const r = {};
|
const r = {};
|
||||||
// eslint-disable-next-line no-await-in-loop
|
// eslint-disable-next-line no-await-in-loop
|
||||||
|
|||||||
Reference in new issue
Block a user