summaryrefslogtreecommitdiff
path: root/src/services/instance-actor.ts
diff options
context:
space:
mode:
authorsyuilo <Syuilotan@yahoo.co.jp>2021-03-22 22:28:09 +0900
committersyuilo <Syuilotan@yahoo.co.jp>2021-03-22 22:28:09 +0900
commit6b753b05d61f8583ea9b9f04cacb0d7cf5a69764 (patch)
treec6911038b57b5e2f5ed201e390a7221dd040cc22 /src/services/instance-actor.ts
parent12.75.0 (diff)
downloadsharkey-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.ts20
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;
+ }
}