From 5aa5896b221ba73773a370fc01d1a9235eca33dd Mon Sep 17 00:00:00 2001 From: syuilo Date: Wed, 24 Apr 2019 08:11:19 +0900 Subject: Cache meta --- src/misc/fetch-meta.ts | 18 ++++++++++++++++-- src/misc/fetch-proxy-account.ts | 2 +- src/misc/reaction-lib.ts | 2 +- 3 files changed, 18 insertions(+), 4 deletions(-) (limited to 'src/misc') diff --git a/src/misc/fetch-meta.ts b/src/misc/fetch-meta.ts index 800f0b9e63..db82adb2a4 100644 --- a/src/misc/fetch-meta.ts +++ b/src/misc/fetch-meta.ts @@ -1,7 +1,11 @@ import { Meta } from '../models/entities/meta'; import { getConnection } from 'typeorm'; -export default async function(): Promise { +let cache: Meta; + +export async function fetchMeta(noCache = false): Promise { + if (!noCache && cache) return cache; + return await getConnection().transaction(async transactionalEntityManager => { // バグでレコードが複数出来てしまっている可能性があるので新しいIDを優先する const meta = await transactionalEntityManager.findOne(Meta, { @@ -11,11 +15,21 @@ export default async function(): Promise { }); if (meta) { + cache = meta; return meta; } else { - return await transactionalEntityManager.save(Meta, { + const saved = await transactionalEntityManager.save(Meta, { id: 'x' }) as Meta; + + cache = saved; + return saved; } }); } + +setInterval(() => { + fetchMeta(true).then(meta => { + cache = meta; + }); +}, 5000); diff --git a/src/misc/fetch-proxy-account.ts b/src/misc/fetch-proxy-account.ts index 17b021e91e..075873091c 100644 --- a/src/misc/fetch-proxy-account.ts +++ b/src/misc/fetch-proxy-account.ts @@ -1,4 +1,4 @@ -import fetchMeta from './fetch-meta'; +import { fetchMeta } from './fetch-meta'; import { ILocalUser } from '../models/entities/user'; import { Users } from '../models'; import { ensure } from '../prelude/ensure'; diff --git a/src/misc/reaction-lib.ts b/src/misc/reaction-lib.ts index 008991454b..ced90ce78f 100644 --- a/src/misc/reaction-lib.ts +++ b/src/misc/reaction-lib.ts @@ -1,5 +1,5 @@ import { emojiRegex } from './emoji-regex'; -import fetchMeta from './fetch-meta'; +import { fetchMeta } from './fetch-meta'; import { Emojis } from '../models'; const basic10: Record = { -- cgit v1.2.3-freya