diff --git a/packages/hydrooj/src/handler/contest.ts b/packages/hydrooj/src/handler/contest.ts index 9ffe4efa9..5b681cb53 100644 --- a/packages/hydrooj/src/handler/contest.ts +++ b/packages/hydrooj/src/handler/contest.ts @@ -81,6 +81,7 @@ export class ContestListHandler extends Handler { ...rule ? { rule } : { rule: { $in: rules } }, ...group ? { assign: { $in: [group] } } : {}, }; + await this.ctx.parallel('contest/list', q, this); const cursor = contest.getMulti(domainId, q).sort({ endAt: -1, beginAt: -1, _id: -1 }); let qs = rule ? `rule=${rule}` : ''; if (group) qs += qs ? `&group=${group}` : `group=${group}`; diff --git a/packages/hydrooj/src/service/bus.ts b/packages/hydrooj/src/service/bus.ts index 888724415..fecf86a30 100644 --- a/packages/hydrooj/src/service/bus.ts +++ b/packages/hydrooj/src/service/bus.ts @@ -94,6 +94,7 @@ export interface EventMap extends LifecycleEvents, HandlerEvents { 'contest/before-add': (payload: Partial) => VoidReturn 'contest/add': (payload: Partial, id: ObjectId) => VoidReturn + 'contest/list': (query: Fileter, handler: any) => VoidReturn 'contest/scoreboard': (tdoc: Tdoc, rows: ScoreboardRow[], udict: BaseUserDict, pdict: ProblemDict) => VoidReturn 'contest/balloon': (domainId: string, tid: ObjectId, bdoc: ContestBalloonDoc) => VoidReturn