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

73 lines (72 loc) 2.43 kB
import { DatabaseDialect } from './database-dialect'; import { ITableSchema } from './schema-inspector'; import { IPrismaQueryExpression } from './prisma-queryable'; export interface ISqlQueryResult { sql: string; parameters: any[]; estimatedCost?: number; usedIndexes?: string[]; } export interface IQueryPlanInfo { operation: 'SELECT' | 'COUNT' | 'AGGREGATE'; tableScans: string[]; indexUsage: { [tableName: string]: string[]; }; joinStrategy?: 'HASH' | 'NESTED_LOOP' | 'MERGE'; estimatedRows?: number; } export interface ISqlBuilderOptions { enableQueryOptimization?: boolean; enableIndexHints?: boolean; maxParameterCount?: number; useCompiledStatements?: boolean; enableQueryPlan?: boolean; } export declare class AdvancedSqlQueryBuilder { private dialect; private schema; private parameterIndex; private parameterMap; private options; private usedTables; private joinConditions; private queryPlan; constructor(dialect: DatabaseDialect, schema: ITableSchema, options?: ISqlBuilderOptions); buildSelectQuery(expression: IPrismaQueryExpression): ISqlQueryResult; buildCountQuery(expression: IPrismaQueryExpression): ISqlQueryResult; buildAggregationQuery(expression: IPrismaQueryExpression, aggregationType: 'MIN' | 'MAX' | 'SUM' | 'AVG', columnName: string): ISqlQueryResult; private buildWhereClause; private buildCondition; private buildFieldCondition; private buildInCondition; private buildStringOperation; private buildFullTextSearch; private buildArrayCondition; private buildSelectClause; private buildFromClause; private buildJoinClauses; private buildJoinClause; private buildOrderByClause; private buildLimitClause; private getParameterPlaceholder; private quoteIdentifier; private normalizeValue; private reset; private buildLogicalOperator; private buildGroupByClause; private buildHavingClause; private getOptimalCountField; private validateAggregationColumn; private optimizeQuery; private optimizeCountQuery; private optimizeAggregationQuery; private addIndexHints; private analyzeWhereForIndexUsage; private calculateQueryCost; private getUsedIndexes; private getArrayType; private buildArrayElementCondition; private buildJsonArraySome; private buildEmptyCheck; }