UNPKG

@cyber-rom/nestjs-scylladb

Version:

Based on https://www.npmjs.com/package/@ouato/nestjs-express-cassandra With support columns name mapping

45 lines 1.92 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.generateString = exports.getConnectionName = exports.getRepositoryToken = exports.getModelToken = exports.getConnectionToken = exports.handleRetry = void 0; const nanoid_1 = require("nanoid"); const common_1 = require("@nestjs/common"); const operators_1 = require("rxjs/operators"); const orm_1 = require("../orm"); function handleRetry(retryAttempts = 6, retryDelay = 3000) { return (source) => source.pipe((0, operators_1.retryWhen)((e) => e.pipe((0, operators_1.scan)((errorCount, error) => { common_1.Logger.error(`Unable to connect to the database. Retrying (${errorCount + 1})...`, error.stack, 'ScyllaModule'); if (errorCount + 1 >= retryAttempts) { throw error; } return errorCount + 1; }, 0), (0, operators_1.delay)(retryDelay)))); } exports.handleRetry = handleRetry; function getConnectionToken(connection = 'default') { return 'default' === connection ? orm_1.Connection : 'string' === typeof connection ? `${connection}Connection` : 'default' === connection.name || !connection.name ? orm_1.Connection : `${connection.name}Connection`; } exports.getConnectionToken = getConnectionToken; function getModelToken(entity) { return `${entity.name}Model`; } exports.getModelToken = getModelToken; function getRepositoryToken(entity) { if (entity.prototype instanceof orm_1.Repository) { return entity.name; } return `${entity.name}Repository`; } exports.getRepositoryToken = getRepositoryToken; function getConnectionName(options) { return options && options.name ? options.name : 'default'; } exports.getConnectionName = getConnectionName; const generateString = () => (0, nanoid_1.nanoid)(10); exports.generateString = generateString; //# sourceMappingURL=orm.utils.js.map