From 2c3fd7364af8598539a9981e3293bf6f2b2fd444 Mon Sep 17 00:00:00 2001 From: undefined Date: Mon, 3 May 2021 19:27:04 +0800 Subject: [PATCH] core: optimize token.getRecent --- packages/hydrooj/package.json | 2 +- packages/hydrooj/src/handler/user.ts | 4 ++-- packages/hydrooj/src/model/token.ts | 5 ++--- 3 files changed, 5 insertions(+), 6 deletions(-) diff --git a/packages/hydrooj/package.json b/packages/hydrooj/package.json index 984ca4d12..11a04e3cb 100644 --- a/packages/hydrooj/package.json +++ b/packages/hydrooj/package.json @@ -1,6 +1,6 @@ { "name": "hydrooj", - "version": "2.24.3", + "version": "2.24.4", "bin": "bin/hydrooj.js", "main": "dist/loader.js", "typings": "dist/loader.d.ts", diff --git a/packages/hydrooj/src/handler/user.ts b/packages/hydrooj/src/handler/user.ts index 5752c0c35..a2169e742 100644 --- a/packages/hydrooj/src/handler/user.ts +++ b/packages/hydrooj/src/handler/user.ts @@ -2,7 +2,7 @@ import moment from 'moment-timezone'; import { UserAlreadyExistError, InvalidTokenError, VerifyPasswordError, UserNotFoundError, SystemError, BlacklistedError, - UserFacingError, LoginError, NotFoundError, + UserFacingError, LoginError, } from '../error'; import { User } from '../interface'; import { @@ -178,7 +178,7 @@ class UserLostPassWithCodeHandler extends Handler { class UserDetailHandler extends Handler { @param('uid', Types.Int) async get(domainId: string, uid: number) { - if (uid === 0) throw new NotFoundError(this.request.path); + if (uid === 0) throw new UserNotFoundError(0); const isSelfProfile = this.user._id === uid; const udoc = await user.getById(domainId, uid); if (!udoc) throw new UserNotFoundError(uid); diff --git a/packages/hydrooj/src/model/token.ts b/packages/hydrooj/src/model/token.ts index 9de14eea1..2fdf58e53 100644 --- a/packages/hydrooj/src/model/token.ts +++ b/packages/hydrooj/src/model/token.ts @@ -78,13 +78,12 @@ class TokenModel { @ArgMethod static getSessionListByUid(uid: number) { - return TokenModel.coll.find({ uid, tokenType: TokenModel.TYPE_SESSION }).sort('updateAt', -1).toArray(); + return TokenModel.coll.find({ uid, tokenType: TokenModel.TYPE_SESSION }).sort('updateAt', -1).limit(100).toArray(); } @ArgMethod static async getMostRecentSessionByUid(uid: number) { - const res = await TokenModel.coll.find({ uid, tokenType: TokenModel.TYPE_SESSION }).sort('updateAt', -1).toArray(); - return res[0]; + return await TokenModel.coll.findOne({ uid, tokenType: TokenModel.TYPE_SESSION }, { sort: { updateAt: -1 } }); } @ArgMethod