diff --git a/packages/hydrojudge/src/hosts/hydro.ts b/packages/hydrojudge/src/hosts/hydro.ts index 286aefc18..547527337 100644 --- a/packages/hydrojudge/src/hosts/hydro.ts +++ b/packages/hydrojudge/src/hosts/hydro.ts @@ -183,9 +183,10 @@ export default class Hydro implements Session { Authorization: `Bearer ${this.config.cookie.split('sid=')[1].split(';')[0]}`, }, }); - const config: { prio?: number, concurrency?: number } = {}; + const config: { prio?: number, concurrency?: number, lang?: string[] } = {}; if (this.config.minPriority !== undefined) config.prio = this.config.minPriority; if (this.config.concurrency !== undefined) config.concurrency = this.config.concurrency; + if (this.config.lang?.length) config.lang = this.config.lang; const content = Object.keys(config).length ? JSON.stringify({ key: 'config', ...config }) : '{"key":"ping"}'; diff --git a/packages/hydrooj/src/handler/judge.ts b/packages/hydrooj/src/handler/judge.ts index 8ac0b3d99..fcdf5a067 100644 --- a/packages/hydrooj/src/handler/judge.ts +++ b/packages/hydrooj/src/handler/judge.ts @@ -294,8 +294,6 @@ class JudgeConnectionHandler extends ConnectionHandler { await updateJudge(msg.info); } else if (msg.key === 'prio' && typeof msg.prio === 'number') { this.query.priority = { $gt: msg.prio }; - } else if (msg.key === 'lang' && msg.lang instanceof Array && msg.lang.every((i) => typeof i === 'string')) { - this.query.lang = { $in: msg.lang }; } else if (msg.key === 'config') { if (Number.isSafeInteger(msg.prio)) { this.query.priority = { $gt: msg.prio }; @@ -309,6 +307,9 @@ class JudgeConnectionHandler extends ConnectionHandler { } } } + if (msg.lang instanceof Array && msg.lang.every((i) => typeof i === 'string')) { + this.query.lang = { $in: msg.lang }; + } } } diff --git a/packages/hydrooj/src/model/record.ts b/packages/hydrooj/src/model/record.ts index 6112a4e7a..d101540ef 100644 --- a/packages/hydrooj/src/model/record.ts +++ b/packages/hydrooj/src/model/record.ts @@ -90,6 +90,7 @@ export default class RecordModel { else if (meta?.type === 'generate') type = 'generate'; return await task.addMany(rids.map((rid) => ({ ...(pdoc.config as any), + lang: rdoc.lang, priority, type, rid,