UNPKG

@nestjs-cls/transactional-adapter-prisma

Version:

A Prisma adapter for @nestjs-cls/transactional

47 lines (46 loc) 1.47 kB
"use strict"; 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;