From 5fc04328ad12d0fcf3a77e62acffba5446e247f4 Mon Sep 17 00:00:00 2001 From: undefined Date: Tue, 29 Nov 2022 00:11:47 +0800 Subject: [PATCH] fix types --- packages/hydrooj/src/interface.ts | 7 +++++-- packages/hydrooj/src/model/contest.ts | 6 +++--- packages/hydrooj/src/model/user.ts | 2 +- packages/hydrooj/src/service/bus.ts | 6 +++--- packages/ui-default/index.ts | 3 +-- 5 files changed, 13 insertions(+), 11 deletions(-) diff --git a/packages/hydrooj/src/interface.ts b/packages/hydrooj/src/interface.ts index 7b038a1c9..862ac5530 100644 --- a/packages/hydrooj/src/interface.ts +++ b/packages/hydrooj/src/interface.ts @@ -110,8 +110,11 @@ export type Udict = Record; export interface BaseUser { _id: number; uname: string; + mail: string; avatar: string; - displayName: string; + school?: string; + displayName?: string; + studentId?: string; } export type BaseUserDict = Record; @@ -509,7 +512,7 @@ export interface ContestRule { ) => Promise; scoreboardRow: ( this: ContestRule, isExport: boolean, _: (s: string) => string, - tdoc: Tdoc<30>, pdict: ProblemDict, udoc: Udoc | User, rank: number, tsdoc: ContestStat & T, + tdoc: Tdoc<30>, pdict: ProblemDict, udoc: BaseUser, rank: number, tsdoc: ContestStat & T, meta?: any, ) => Promise; scoreboard: ( diff --git a/packages/hydrooj/src/model/contest.ts b/packages/hydrooj/src/model/contest.ts index fc6c15a14..5ec1047b6 100644 --- a/packages/hydrooj/src/model/contest.ts +++ b/packages/hydrooj/src/model/contest.ts @@ -6,8 +6,8 @@ import { ContestScoreboardHiddenError, ValidationError, } from '../error'; import { - ContestRule, ContestRules, ProblemDict, - ScoreboardNode, ScoreboardRow, Tdoc, Udict, + BaseUserDict, ContestRule, ContestRules, ProblemDict, + ScoreboardNode, ScoreboardRow, Tdoc, } from '../interface'; import ranked from '../lib/rank'; import * as bus from '../service/bus'; @@ -722,7 +722,7 @@ export function canShowScoreboard(tdoc: Tdoc<30>, allowPermOverride = true) { export async function getScoreboard( this: Handler, domainId: string, tid: ObjectID, isExport = false, -): Promise<[Tdoc<30>, ScoreboardRow[], Udict, ProblemDict]> { +): Promise<[Tdoc<30>, ScoreboardRow[], BaseUserDict, ProblemDict]> { const tdoc = await get(domainId, tid); if (!canShowScoreboard.call(this, tdoc)) throw new ContestScoreboardHiddenError(tid); const tsdocsCursor = getMultiStatus(domainId, { docId: tid }).sort(RULES[tdoc.rule].statusSort); diff --git a/packages/hydrooj/src/model/user.ts b/packages/hydrooj/src/model/user.ts index b4a9d7e02..ad56f0919 100644 --- a/packages/hydrooj/src/model/user.ts +++ b/packages/hydrooj/src/model/user.ts @@ -347,7 +347,7 @@ class UserModel { static async getListForRender(domainId: string, uids: number[]) { const [udocs, dudocs] = await Promise.all([ - UserModel.getMulti({ _id: { $in: uids } }, ['_id', 'uname', 'avatar']).toArray(), + UserModel.getMulti({ _id: { $in: uids } }, ['_id', 'uname', 'avatar', 'school', 'studentId']).toArray(), domain.getDomainUserMulti(domainId, uids).project({ uid: 1, displayName: 1 }).toArray(), ]); const udict = {}; diff --git a/packages/hydrooj/src/service/bus.ts b/packages/hydrooj/src/service/bus.ts index 3b0343915..eb063eb9e 100644 --- a/packages/hydrooj/src/service/bus.ts +++ b/packages/hydrooj/src/service/bus.ts @@ -6,9 +6,9 @@ import pm2 from '@hydrooj/utils/lib/locate-pm2'; import type { ProblemSolutionHandler } from '../handler/problem'; import type { UserRegisterHandler } from '../handler/user'; import type { - DiscussionDoc, DomainDoc, FileInfo, + BaseUserDict, DiscussionDoc, DomainDoc, FileInfo, MessageDoc, ProblemDict, ProblemDoc, RecordDoc, - ScoreboardRow, Tdoc, TrainingDoc, Udict, User, + ScoreboardRow, Tdoc, TrainingDoc, User, } from '../interface'; import type { DocType } from '../model/document'; import type { ConnectionHandler, Handler } from './server'; @@ -89,7 +89,7 @@ export interface EventMap extends LifecycleEvents, HandlerEvents { 'contest/before-add': (payload: Partial>) => VoidReturn 'contest/add': (payload: Partial>, id: ObjectID) => VoidReturn - 'contest/scoreboard': (tdoc: Tdoc<30>, rows: ScoreboardRow[], udict: Udict, pdict: ProblemDict) => VoidReturn + 'contest/scoreboard': (tdoc: Tdoc<30>, rows: ScoreboardRow[], udict: BaseUserDict, pdict: ProblemDict) => VoidReturn 'oplog/log': (type: string, handler: Handler, args: any, data: any) => VoidReturn; diff --git a/packages/ui-default/index.ts b/packages/ui-default/index.ts index ed0749a88..b14d4d9f7 100644 --- a/packages/ui-default/index.ts +++ b/packages/ui-default/index.ts @@ -4,8 +4,7 @@ import crypto from 'crypto'; import esbuild from 'esbuild'; import { ContestModel, Context, fs, Handler, Logger, ObjectID, PERM, PRIV, ProblemModel, Schema, - SettingModel, SystemModel, SystemSettings, UiContextBase, - UserModel, + SettingModel, SystemModel, SystemSettings, UiContextBase, UserModel, } from 'hydrooj'; import { debounce } from 'lodash'; import { tmpdir } from 'os';