UNPKG

@algochad/prisma-core

Version:

A comprehensive NestJS library that provides EF-Core-like operations using Prisma and GraphQL. Features LINQ-style query builders, advanced data manipulation, GraphQL integration with genql, and a unified API for both Prisma and GraphQL operations. Includ

150 lines 6.73 kB
"use strict"; 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 __metadata = (this && this.__metadata) || function (k, v) { if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v); }; var PrismaCoreService_1; Object.defineProperty(exports, "__esModule", { value: true }); exports.PrismaCoreService = void 0; const common_1 = require("@nestjs/common"); const prisma_unified_builder_1 = require("./core/prisma/prisma-unified-builder"); const prisma_query_builder_1 = require("./core/prisma/prisma-query-builder"); const prisma_mutation_builder_1 = require("./core/prisma/prisma-mutation-builder"); const graphql_unified_builder_1 = require("./core/graphql/graphql-unified-builder"); const graphql_query_builder_1 = require("./core/graphql/graphql-query-builder"); const graphql_mutation_builder_1 = require("./core/graphql/graphql-mutation-builder"); const graphql_repository_1 = require("./core/graphql/graphql-repository"); const graphql_repository_universal_1 = require("./core/graphql/graphql-repository-universal"); let PrismaCoreService = PrismaCoreService_1 = class PrismaCoreService { _prismaClient; _graphqlClient = null; constructor() { } get isInitialized() { return !!this._prismaClient; } get isGraphQLInitialized() { return !!this._graphqlClient; } initialize(prismaClient) { if (this._prismaClient) { console.warn('PrismaCoreService is already initialized with Prisma client. Skipping reinitialization.'); return; } this._prismaClient = prismaClient; } initializeGraphQL(graphqlClient) { if (this._graphqlClient) { console.warn('PrismaCoreService is already initialized with GraphQL client. Skipping reinitialization.'); return; } this._graphqlClient = graphqlClient; } get client() { if (!this._prismaClient) { throw new Error('PrismaCoreService not initialized with Prisma client. Call initialize(prismaClient) first.'); } return this._prismaClient; } get graphqlClient() { if (!this._graphqlClient) { throw new Error('PrismaCoreService not initialized with GraphQL client. Call initializeGraphQL(graphqlClient) first.'); } return this._graphqlClient; } model(modelName) { const prismaModel = this.client[modelName]; if (!prismaModel) { throw new Error(`Model '${modelName}' not found in Prisma client`); } return new prisma_unified_builder_1.PrismaUnifiedBuilder(prismaModel, modelName); } QueryBuilder(modelName) { const model = this.client[modelName]; if (!model) { throw new Error(`Model '${modelName}' not found in Prisma client`); } return new prisma_query_builder_1.PrismaQueryBuilder(model, modelName); } MutationBuilder(modelName) { const model = this.client[modelName]; if (!model) { throw new Error(`Model '${modelName}' not found in Prisma client`); } return new prisma_mutation_builder_1.PrismaMutationBuilder(model); } Builder(modelName) { const model = this.client[modelName]; if (!model) { throw new Error(`Model '${modelName}' not found in Prisma client`); } return new prisma_unified_builder_1.PrismaUnifiedBuilder(model, modelName); } Query(modelName) { return this.QueryBuilder(modelName); } Mutate(modelName) { return this.MutationBuilder(modelName); } GraphQLQueryBuilder(operationName) { return new graphql_query_builder_1.GraphQLQueryBuilder(this.graphqlClient, operationName, 'query'); } GraphQLMutationBuilder(operationNames) { return new graphql_mutation_builder_1.GraphQLMutationBuilder(this.graphqlClient, operationNames); } GraphQLBuilder(queryOperationName, mutationOperationNames) { return new graphql_unified_builder_1.GraphQLUnifiedBuilder(this.graphqlClient, queryOperationName, mutationOperationNames); } GraphQLSubscriptionBuilder(operationName) { return new graphql_query_builder_1.GraphQLQueryBuilder(this.graphqlClient, operationName, 'subscription'); } GraphQLQuery(operationName) { return this.GraphQLQueryBuilder(operationName); } GraphQLMutate(operationNames) { return this.GraphQLMutationBuilder(operationNames); } GraphQLRepository(repositoryClass, config) { if (!this._graphqlClient) { throw new Error('PrismaCoreService not initialized with GraphQL client. Call initializeGraphQL(graphqlClient) first.'); } return new repositoryClass(this._graphqlClient, config); } GraphQLCrudRepository(repositoryClass, modelName, options) { const config = graphql_repository_1.GraphQLRepositoryFactory.createCrudConfig(modelName, options); return this.GraphQLRepository(repositoryClass, config); } get graphqlRepository() { if (!this._graphqlClient) { throw new Error('PrismaCoreService not initialized with GraphQL client. Call initializeGraphQL(graphqlClient) first.'); } return new graphql_repository_universal_1.GraphQLRepository(this); } static createWithClient(prismaClient) { const service = new PrismaCoreService_1(); service.initialize(prismaClient); return service; } static createWithGraphQLClient(graphqlClient) { const service = new PrismaCoreService_1(); service.initializeGraphQL(graphqlClient); return service; } static createWithBothClients(prismaClient, graphqlClient) { const service = new PrismaCoreService_1(); service.initialize(prismaClient); service.initializeGraphQL(graphqlClient); return service; } }; exports.PrismaCoreService = PrismaCoreService; exports.PrismaCoreService = PrismaCoreService = PrismaCoreService_1 = __decorate([ (0, common_1.Injectable)(), __metadata("design:paramtypes", []) ], PrismaCoreService); //# sourceMappingURL=prisma-core.service.js.map