UNPKG

@eleven-am/nestjs-graphql-crud

Version:

nestjs-graphql-crud is a library that aims to reduce the boilerplate code needed to create a GraphQL CRUD API.

66 lines 3.72 kB
"use strict"; /** * @module createBaseCrudModule * @description Creates a dynamically generated NestJS module with CRUD operations for a specific model */ Object.defineProperty(exports, "__esModule", { value: true }); exports.createBaseCrudModule = createBaseCrudModule; const internalTypes_1 = require("./internalTypes"); const createBaseCrudService_1 = require("./createBaseCrudService"); const createBaseCrudResolver_1 = require("./createBaseCrudResolver"); const decorators_1 = require("./decorators"); const createCombinedRelationResolverClass_1 = require("./createCombinedRelationResolverClass"); const createSubscriptionResolver_1 = require("./createSubscriptionResolver"); /** * Creates a NestJS dynamic module that provides CRUD operations for a specific model * * @template Item - The entity type this CRUD module will manage * @template CreateInput - The input type for create operations * @template UpdateInput - The input type for update operations * @template UpdateManyInput - The input type for update many operations * @template WhereInput - The input type for query filters * * @param {symbol} dataProviderToken - Symbol for the data provider token * @param {symbol} fieldSelectionProviderToken - Symbol for the field selection provider token * @param {CrudModuleOptions<Item, CreateInput, UpdateInput, UpdateManyInput, WhereInput>} options - Configuration options for the CRUD module * @returns {DynamicModule} A dynamically generated NestJS module with CRUD capabilities */ function createBaseCrudModule(dataProviderToken, fieldSelectionProviderToken, options) { const SubscriptionFilter = options.subscriptionResolver?.filter ?? internalTypes_1.DefaultSubscriptionFilter; const serviceToken = Symbol(`${options.modelName}Service`); const subscriptionResolversToken = Symbol(`${options.modelName}SubscriptionResolvers`); const BaseCrudService = (0, createBaseCrudService_1.createBaseCrudService)(options.modelName, dataProviderToken, fieldSelectionProviderToken); const BaseCrudResolver = (0, createBaseCrudResolver_1.createBaseCrudResolver)(serviceToken, subscriptionResolversToken, SubscriptionFilter, options); const SubscriptionResolver = (0, createSubscriptionResolver_1.createSubscriptionResolver)(options.modelName, dataProviderToken, fieldSelectionProviderToken, options.subscriptionResolver?.resolver); const BaseCrudServiceProvider = { provide: serviceToken, useClass: BaseCrudService }; const SubscriptionResolverProvider = { provide: subscriptionResolversToken, useClass: SubscriptionResolver }; const CrudResolver = (0, createCombinedRelationResolverClass_1.createCombinedRelationResolverClass)(options.modelName, options.entity, BaseCrudResolver, options.resolvers); class BaseCrudModule { /** * Creates and configures the CRUD module with all necessary providers * * @returns {DynamicModule} Configured NestJS module */ static forRoot() { return { global: true, module: BaseCrudModule, imports: options.imports, exports: options.exports, controllers: options.controllers, providers: [ CrudResolver, BaseCrudServiceProvider, SubscriptionResolverProvider, ...(options.providers ?? []), ], }; } } Object.defineProperty(BaseCrudModule, 'name', { value: `${(0, decorators_1.firstLetterUppercase)(options.modelName)}Module`, writable: false, }); return BaseCrudModule.forRoot(); } //# sourceMappingURL=createBaseCrudModule.js.map