diff options
| author | syuilo <Syuilotan@yahoo.co.jp> | 2021-03-18 10:19:30 +0900 |
|---|---|---|
| committer | syuilo <Syuilotan@yahoo.co.jp> | 2021-03-18 10:19:30 +0900 |
| commit | d3c8368b0c3f037a87a2a8c9acfc5a54cf1d06e1 (patch) | |
| tree | c943deb27a12e0aac8c83857ec0b17743ce792f9 /src/server/api/authenticate.ts | |
| parent | DB上で壊れたドライブファイルを無視するように (#7345) (diff) | |
| download | sharkey-d3c8368b0c3f037a87a2a8c9acfc5a54cf1d06e1.tar.gz sharkey-d3c8368b0c3f037a87a2a8c9acfc5a54cf1d06e1.tar.bz2 sharkey-d3c8368b0c3f037a87a2a8c9acfc5a54cf1d06e1.zip | |
Improve API performance
Diffstat (limited to 'src/server/api/authenticate.ts')
| -rw-r--r-- | src/server/api/authenticate.ts | 9 |
1 files changed, 9 insertions, 0 deletions
diff --git a/src/server/api/authenticate.ts b/src/server/api/authenticate.ts index 0374ca35ea..7404c477fd 100644 --- a/src/server/api/authenticate.ts +++ b/src/server/api/authenticate.ts @@ -3,12 +3,18 @@ import { User } from '../../models/entities/user'; import { Users, AccessTokens, Apps } from '../../models'; import { AccessToken } from '../../models/entities/access-token'; +const cache = {} as Record<string, User>; + export default async (token: string): Promise<[User | null | undefined, AccessToken | null | undefined]> => { if (token == null) { return [null, null]; } if (isNativeToken(token)) { + if (cache[token]) { // TODO: キャッシュされてから一定時間経過していたら破棄する + return [cache[token], null]; + } + // Fetch user const user = await Users .findOne({ token }); @@ -17,8 +23,11 @@ export default async (token: string): Promise<[User | null | undefined, AccessTo throw new Error('user not found'); } + cache[token] = user; + return [user, null]; } else { + // TODO: cache const accessToken = await AccessTokens.findOne({ where: [{ hash: token.toLowerCase() // app |