nestjs-starter
Version:
Get started for beginners with Nestjs
25 lines (22 loc) • 721 B
text/typescript
import { Inject, Injectable, forwardRef } from '@nestjs/common';
import { Sequelize, Transaction } from 'sequelize';
()
export class UnitOfWork {
constructor(
'SequelizeInstance'))
private readonly sequelizeInstance: Sequelize
) {}
(forwardRef(() => async scope<T>(callback: (t: Transaction) => Promise<T>): Promise<T> {
const isolationLevel = Transaction.ISOLATION_LEVELS.SERIALIZABLE;
return new Promise<T>((resolve, reject) => {
this.sequelizeInstance
.transaction({ isolationLevel }, callback)
.then((value) => {
resolve(value);
})
.catch((error) => {
reject(error);
});
});
}
}