Metaのアクセスでトランザクションを張るように (#4720)

* admin/instanceでmetaをキャッシュしないように

* Metaのアクセスにトランザクションをかける
This commit is contained in:
MeiMei
2019-04-17 00:45:33 +09:00
committed by syuilo
parent fc27890f13
commit b186504718
3 changed files with 31 additions and 17 deletions

View File

@ -1,13 +1,21 @@
import { Meta } from '../models/entities/meta';
import { Metas } from '../models';
import { getConnection } from 'typeorm';
export default async function(): Promise<Meta> {
const meta = await Metas.findOne();
if (meta) {
return meta;
} else {
return Metas.save({
id: 'x'
} as Meta);
}
return await getConnection().transaction(async transactionalEntityManager => {
// バグでレコードが複数出来てしまっている可能性があるので新しいIDを優先する
const meta = await transactionalEntityManager.findOne(Meta, {
order: {
id: 'DESC'
}
});
if (meta) {
return meta;
} else {
return await transactionalEntityManager.save(Meta, {
id: 'x'
}) as Meta;
}
});
}