@nestjs-cls/transactional-adapter-prisma
Version:
A Prisma adapter for @nestjs-cls/transactional
47 lines (46 loc) • 1.47 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.InvalidSQLFlavorError = void 0;
exports.getSavepointStatements = getSavepointStatements;
const standardSyntax = {
save: (id) => `SAVEPOINT ${id};`,
release: (id) => `RELEASE SAVEPOINT ${id};`,
rollback: (id) => `ROLLBACK TO SAVEPOINT ${id};`,
};
const microsoftSyntax = {
save: (id) => `SAVE TRANSACTION ${id};`,
release: () => null,
rollback: (id) => `ROLLBACK TRANSACTION ${id};`,
};
const oracleSyntax = {
save: (id) => `SAVEPOINT ${id};`,
release: () => null,
rollback: (id) => `ROLLBACK TO SAVEPOINT ${id};`,
};
const savepointStatementGetters = new Map([
['postgresql', standardSyntax],
['mysql', standardSyntax],
['mariadb', standardSyntax],
['sqlite', standardSyntax],
['mssql', microsoftSyntax],
['azuresql', microsoftSyntax],
['oracle', oracleSyntax],
]);
function getSavepointStatements(flavor, id) {
const statements = savepointStatementGetters.get(flavor);
if (!statements) {
throw new InvalidSQLFlavorError(flavor);
}
return {
save: statements.save(id),
release: statements.release(id),
rollback: statements.rollback(id),
};
}
class InvalidSQLFlavorError extends Error {
constructor(flavor) {
super(`Invalid SQL flavor: ${flavor}`);
this.name = 'InvalidSQLFlavorError';
}
}
exports.InvalidSQLFlavorError = InvalidSQLFlavorError;