core&ui: contest: tsdoc projection for contest

This commit is contained in:
undefined committed 2022-09-12 18:41:06 +08:00
1 parent 8f7d81ddca
commit dbe369d0c6
9 files changed
+57 -28

No files matched your search

+11 -1
View File
@@ -2,8 +2,9 @@
import { FilterQuery } from 'mongodb';
import type {
DomainDoc, ProblemStatusDoc, RecordDoc,
Udoc,
Tdoc, Udoc,
} from './interface';
import * as contest from './model/contest';
import * as document from './model/document';
import domain from './model/domain';
import problem, { Field, ProblemDoc } from './model/problem';
@@ -20,6 +21,15 @@ export async function iterateAllUser(cb: (udoc: Udoc, current?: number, total?:
for (const i in udocs) await cb(udocs[i], +i, udocs.length);
}
export async function iterateAllContest(cb: (tdoc: Tdoc) => Promise<any>) {
await iterateAllDomain(async (ddoc) => {
const tdocs = await contest.getMulti(ddoc._id, {}).toArray();
for (const tdoc of tdocs) {
await cb(tdoc);
}
});
}
export async function iterateAllPsdoc(filter: FilterQuery<ProblemStatusDoc>, cb: (psdoc: ProblemStatusDoc) => Promise<any>) {
await iterateAllDomain(async ({ _id: domainId }) => {
const cursor = document.getMultiStatus(domainId, document.TYPE_PROBLEM, filter);