Metaのアクセスでトランザクションを張るように (#4720)
* admin/instanceでmetaをキャッシュしないように * Metaのアクセスにトランザクションをかける
This commit is contained in:
@ -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;
|
||||
}
|
||||
});
|
||||
}
|
||||
|
Reference in New Issue
Block a user