nestjs-express-cassandra
Version:
Express-cassandra module for Nest framework
71 lines (70 loc) • 3.41 kB
JavaScript
;
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;