diff options
| author | syuilo <Syuilotan@yahoo.co.jp> | 2021-03-22 22:28:09 +0900 |
|---|---|---|
| committer | syuilo <Syuilotan@yahoo.co.jp> | 2021-03-22 22:28:09 +0900 |
| commit | 6b753b05d61f8583ea9b9f04cacb0d7cf5a69764 (patch) | |
| tree | c6911038b57b5e2f5ed201e390a7221dd040cc22 /src/services/instance-actor.ts | |
| parent | 12.75.0 (diff) | |
| download | sharkey-6b753b05d61f8583ea9b9f04cacb0d7cf5a69764.tar.gz sharkey-6b753b05d61f8583ea9b9f04cacb0d7cf5a69764.tar.bz2 sharkey-6b753b05d61f8583ea9b9f04cacb0d7cf5a69764.zip | |
perf(server): Cache user instance actor
Diffstat (limited to 'src/services/instance-actor.ts')
| -rw-r--r-- | src/services/instance-actor.ts | 20 |
1 files changed, 15 insertions, 5 deletions
diff --git a/src/services/instance-actor.ts b/src/services/instance-actor.ts index 74591846fa..a6dadb0cd6 100644 --- a/src/services/instance-actor.ts +++ b/src/services/instance-actor.ts @@ -1,17 +1,27 @@ import { createSystemUser } from './create-system-user'; import { ILocalUser } from '../models/entities/user'; import { Users } from '../models'; +import { Cache } from '../misc/cache'; const ACTOR_USERNAME = 'instance.actor' as const; +const cache = new Cache<ILocalUser>(Infinity); + export async function getInstanceActor(): Promise<ILocalUser> { + const cached = cache.get(null); + if (cached) return cached; + const user = await Users.findOne({ host: null, username: ACTOR_USERNAME - }); - - if (user) return user as ILocalUser; + }) as ILocalUser | undefined; - const created = await createSystemUser(ACTOR_USERNAME); - return created as ILocalUser; + if (user) { + cache.set(null, user); + return user; + } else { + const created = await createSystemUser(ACTOR_USERNAME) as ILocalUser; + cache.set(null, created); + return created; + } } |