UNPKG

nestjs-express-cassandra

Version:
71 lines (70 loc) 3.41 kB
"use strict"; var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } return new (P || (P = Promise))(function (resolve, reject) { function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } step((generator = generator.apply(thisArg, _arguments || [])).next()); }); }; Object.defineProperty(exports, "__esModule", { value: true }); exports.getRepositoryProviderName = exports.getConnectionProviderName = exports.getModelProviderName = void 0; const base_repository_1 = require("../base-repository"); const constants_1 = require("../constants"); const metadata_1 = require("./metadata"); const orm_1 = require("./orm"); function getModelProviderName(entity) { return `${entity.name}Model`; } exports.getModelProviderName = getModelProviderName; function getConnectionProviderName(connection = constants_1.DEFAULT_CONNECTION_NAME) { return constants_1.DEFAULT_CONNECTION_NAME === connection ? constants_1.DEFAULT_CONNECTION_NAME : 'string' === typeof connection ? `${connection}Connection` : !connection.name ? constants_1.DEFAULT_CONNECTION_NAME : `${connection.name}Connection`; } exports.getConnectionProviderName = getConnectionProviderName; function getRepositoryProviderName(entity) { if (entity.prototype instanceof base_repository_1.BaseRepository) { return entity.name; } return `${entity.name}Repository`; } exports.getRepositoryProviderName = getRepositoryProviderName; function createFeatureProviders(entities, connection) { const createModelProvider = (entity) => ({ provide: getModelProviderName(entity), useFactory: (connection) => __awaiter(this, void 0, void 0, function* () { return (0, orm_1.loadSchema)(connection, entity); }), inject: [getConnectionProviderName(connection)], }); const createRepositoryProvider = (entity) => ({ provide: getRepositoryProviderName(entity), useFactory: (model) => __awaiter(this, void 0, void 0, function* () { return (0, orm_1.createRepository)(entity, model); }), inject: [getModelProviderName(entity)], }); const createCustomRepositoryProvider = (repository) => { const entity = (0, metadata_1.getEntityMetadata)(repository.prototype); return { provide: getRepositoryProviderName(repository), useFactory: (model) => __awaiter(this, void 0, void 0, function* () { return (0, orm_1.createRepository)(entity, model, repository); }), inject: [getModelProviderName(entity)], }; }; const providers = []; entities.forEach((entity) => { if (entity.prototype instanceof base_repository_1.BaseRepository) { providers.push(createCustomRepositoryProvider(entity)); } else { providers.push(createModelProvider(entity), createRepositoryProvider(entity)); } }); return providers; } exports.default = createFeatureProviders;