diff options
Diffstat (limited to 'src/misc/fetch-meta.ts')
| -rw-r--r-- | src/misc/fetch-meta.ts | 18 |
1 files changed, 16 insertions, 2 deletions
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<Meta> { +let cache: Meta; + +export async function fetchMeta(noCache = false): Promise<Meta> { + 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<Meta> { }); 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); |