@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
JavaScript
"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