core: rp: fix wrong contest status count (#530)

This commit is contained in:
panda authored and GitHub committed 2023-03-06 23:10:45 +08:00
1 parent 2731d4ba3a
commit 4df9527eac
7 files changed
+20 -5

No files matched your search

+1 -1
View File
@@ -1,6 +1,6 @@
{
"name": "hydrooj",
"version": "4.8.0",
"version": "4.8.1",
"bin": "bin/hydrooj.js",
"main": "src/plugin-api",
"module": "src/plugin-api",
+5
View File
@@ -785,6 +785,10 @@ export function count(domainId: string, query: any) {
return document.count(domainId, document.TYPE_CONTEST, query);
}
export function countStatus(domainId: string, query: any) {
return document.countStatus(domainId, document.TYPE_CONTEST, query);
}
export function getMulti(
domainId: string, query: Filter<document.DocType['30']> = {},
) {
@@ -900,6 +904,7 @@ global.Hydro.model.contest = {
updateStatus,
getStatus,
count,
countStatus,
getMulti,
setStatus,
getAndListStatus,
+7
View File
@@ -173,6 +173,12 @@ export function count<K extends keyof DocType>(
return coll.countDocuments({ ...query, docType, domainId });
}
export function countStatus<K extends keyof DocStatusType>(
domainId: string, docType: K, query?: Filter<DocStatusType[K]>,
) {
return collStatus.countDocuments({ ...query, docType, domainId });
}
export async function push<K extends keyof DocType>(
domainId: string, docType: K, docId: DocType[K]['docId'],
key: ArrayKeys<DocType[K]>, value: DocType[K][0],
@@ -463,6 +469,7 @@ global.Hydro.model.document = {
addToSet,
cappedIncStatus,
count,
countStatus,
deleteMulti,
deleteMultiStatus,
deleteOne,
+1 -1
View File
@@ -64,7 +64,7 @@ export const RpTypes: Record<string, RpDef> = {
docId: tdoc.docId,
journal: { $ne: null },
};
if (!await contest.count(tdoc.domainId, query)) continue;
if (!await contest.countStatus(tdoc.domainId, query)) continue;
const cursor = contest.getMultiStatus(tdoc.domainId, query).sort(contest.RULES[tdoc.rule].statusSort);
const rankedTsdocs = await contest.RULES[tdoc.rule].ranked(tdoc, cursor);
const users = rankedTsdocs.map((i) => ({ uid: i[1].uid, rank: i[0], old: udict[i[1].uid] }));