From 2858e96414d6aab6509af2477eadd1697d0acb85 Mon Sep 17 00:00:00 2001 From: undefined Date: Fri, 17 Oct 2025 19:07:25 +0800 Subject: [PATCH] core: add contest/before-edit --- packages/hydrooj/src/model/contest.ts | 1 + packages/hydrooj/src/service/bus.ts | 1 + 2 files changed, 2 insertions(+) diff --git a/packages/hydrooj/src/model/contest.ts b/packages/hydrooj/src/model/contest.ts index 7e46f6b5f..c2c5739fc 100644 --- a/packages/hydrooj/src/model/contest.ts +++ b/packages/hydrooj/src/model/contest.ts @@ -824,6 +824,7 @@ export async function edit(domainId: string, tid: ObjectId, $set: Partial) if ($set.rule && !RULES[$set.rule]) throw new ValidationError('rule'); const tdoc = await document.get(domainId, document.TYPE_CONTEST, tid); if (!tdoc) throw new ContestNotFoundError(domainId, tid); + await bus.parallel('contest/before-edit', tdoc, $set); RULES[$set.rule || tdoc.rule].check(Object.assign(tdoc, $set)); const res = await document.set(domainId, document.TYPE_CONTEST, tid, $set); await bus.parallel('contest/edit', res); diff --git a/packages/hydrooj/src/service/bus.ts b/packages/hydrooj/src/service/bus.ts index c412fb4fa..d4b425dd9 100644 --- a/packages/hydrooj/src/service/bus.ts +++ b/packages/hydrooj/src/service/bus.ts @@ -85,6 +85,7 @@ export interface EventMap { 'contest/before-add': (payload: Partial) => VoidReturn; 'contest/add': (payload: Partial, id: ObjectId) => VoidReturn; + 'contest/before-edit': (tdoc: Tdoc, $set: Partial) => VoidReturn; 'contest/edit': (payload: Tdoc) => VoidReturn; 'contest/list': (query: Filter, handler: any) => VoidReturn; 'contest/scoreboard': (tdoc: Tdoc, rows: ScoreboardRow[], udict: BaseUserDict, pdict: ProblemDict) => VoidReturn;