nestjs-prisma-base
Version:
A comprehensive NestJS package providing base classes, utilities, and decorators for building CRUD APIs with Prisma ORM integration, featuring pagination, search, filtering, relation loading, configurable DTOs, and modular composition capabilities.
82 lines • 3.54 kB
JavaScript
;
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
return c > 3 && r && Object.defineProperty(target, key, r), r;
};
var PrismaModule_1;
Object.defineProperty(exports, "__esModule", { value: true });
exports.PrismaModule = void 0;
const common_1 = require("@nestjs/common");
const prisma_service_1 = require("./prisma.service");
const configurable_dtos_1 = require("../common/configurable-dtos");
const swagger_dtos_1 = require("../common/swagger-dtos");
let PrismaModule = PrismaModule_1 = class PrismaModule {
static forRoot(options) {
const providerToken = options?.providerToken || prisma_service_1.PrismaService;
if (!options.prismaClient) {
throw new Error('PrismaClient instance is required when using PrismaModule.forRoot()');
}
if (options.dtoOptions) {
this.applyDTOConfiguration(options.dtoOptions);
}
return {
global: options?.isGlobal !== false,
module: PrismaModule_1,
providers: [
{
provide: providerToken,
useFactory: () => {
return new prisma_service_1.PrismaService(options.prismaClient);
},
},
],
exports: [providerToken],
};
}
static forFeature(options) {
const providerToken = options.providerToken || `${options.name.toUpperCase()}_PRISMA_SERVICE`;
if (!options.prismaClient) {
throw new Error('PrismaClient instance is required when using PrismaModule.forFeature()');
}
if (options.dtoOptions) {
this.applyDTOConfiguration(options.dtoOptions);
}
return {
module: PrismaModule_1,
providers: [
{
provide: providerToken,
useFactory: () => {
return new prisma_service_1.PrismaService(options.prismaClient);
},
},
],
exports: [providerToken],
};
}
static applyDTOConfiguration(options) {
if (options.dtoConfig) {
(0, configurable_dtos_1.configureDTOs)(options.dtoConfig);
}
if (options.swaggerIntegration) {
(0, swagger_dtos_1.configureSwaggerDTOs)(options.swaggerIntegration);
}
if (process.env.NODE_ENV === 'development') {
console.log('🎯 NestJS Prisma Base - DTO Configuration Applied:', {
dtoConfig: options.dtoConfig || 'Using defaults',
swaggerIntegration: options.swaggerIntegration?.enabled ? 'Enabled' : 'Disabled',
minimalDTOs: options.useMinimalDTOs ? 'Enabled' : 'Disabled',
});
}
}
static configureDTOs(options) {
this.applyDTOConfiguration(options);
}
};
exports.PrismaModule = PrismaModule;
exports.PrismaModule = PrismaModule = PrismaModule_1 = __decorate([
(0, common_1.Module)({})
], PrismaModule);
//# sourceMappingURL=prisma.module.js.map