nestjs-slonik
Version:
Slonik module for NestJS
37 lines (36 loc) • 1.77 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.generateString = exports.handleRetry = exports.getPoolToken = exports.getPoolName = void 0;
const common_1 = require("@nestjs/common");
const uuid_1 = require("uuid");
const operators_1 = require("rxjs/operators");
const slonik_constants_1 = require("../slonik.constants");
const logger = new common_1.Logger('SlonikModule');
function getPoolName(options) {
return options && options.name ? options.name : slonik_constants_1.DEFAULT_POOL_NAME;
}
exports.getPoolName = getPoolName;
function getPoolToken(options = slonik_constants_1.DEFAULT_POOL_NAME) {
const name = typeof options === 'string' ? options : getPoolName(options);
return `${name}SlonikPool`;
}
exports.getPoolToken = getPoolToken;
function handleRetry(retryAttempts = 9, retryDelay = 3000, poolName = slonik_constants_1.DEFAULT_POOL_NAME, verboseRetryLog = false, toRetry) {
return (source) => source.pipe((0, operators_1.retryWhen)((e) => e.pipe((0, operators_1.scan)((errorCount, error) => {
if (toRetry && !toRetry(error)) {
throw error;
}
const poolInfo = poolName === slonik_constants_1.DEFAULT_POOL_NAME ? '' : ` (${poolName})`;
const verboseMessage = verboseRetryLog
? ` Message: ${error.message}.`
: '';
logger.error(`Unable to connect to the database${poolInfo}.${verboseMessage} Retrying (${errorCount + 1})...`, error.stack);
if (errorCount + 1 >= retryAttempts) {
throw error;
}
return errorCount + 1;
}, 0), (0, operators_1.delay)(retryDelay))));
}
exports.handleRetry = handleRetry;
const generateString = () => (0, uuid_1.v4)();
exports.generateString = generateString;