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

75 lines (74 loc) 5.67 kB
import { IAsyncEnumerable, IList, IEnumerable } from '../../collections'; import { IQueryable } from '../../collections/efcore'; import { PrismaQueryProvider, IPrismaQueryExpression } from '../../collections/prisma/prisma-queryable'; import { PrismaSelectResult, PrismaIncludeResult } from './prisma-types'; export declare class PrismaQueryBuilder<TModel = unknown, TSelect = TModel, TWhereInput = any, TOrderByInput = any, TInclude = any, TSelectInput = any, TExpectedResult = Record<string, any>> { private prismaModel; private whereClause; private selectClause?; private includeClause?; private orderByClause?; private takeClause?; private skipClause?; private modelName?; constructor(prismaModel: any, modelName?: string); static create<TModel = unknown, TSelect = TModel, TWhereInput = any, TOrderByInput = any, TInclude = any, TSelectInput = any, TExpectedResult = Record<string, any>>(prismaModel: any, expectedResult?: TExpectedResult): PrismaQueryBuilder<TModel, TSelect, TWhereInput, TOrderByInput, TInclude, TSelectInput, TExpectedResult>; static createFrom<TModel = unknown, TSelect = TModel, TWhereInput = any, TOrderByInput = any, TInclude = any, TSelectInput = any, TExpectedResult = Record<string, any>>(builder: PrismaQueryBuilder<any>, prismaModel: any, expectedResult?: TExpectedResult): PrismaQueryBuilder<TModel, TSelect, TWhereInput, TOrderByInput, TInclude, TSelectInput, TExpectedResult>; ContextFactory(): PrismaQueryBuilder<TModel, TSelect, TWhereInput, TOrderByInput, TInclude, TSelectInput, TExpectedResult>; NewContext(): PrismaQueryBuilder<TModel, TSelect, TWhereInput, TOrderByInput, TInclude, TSelectInput, TExpectedResult>; private resetQueryState; Where(where: TWhereInput): this; Select<TExpectedType = any>(select: TSelectInput): PrismaQueryBuilder<TModel, TExpectedType, TWhereInput, TOrderByInput, TInclude, TSelectInput, TExpectedType>; Select<TSelectFields extends TSelectInput>(select: TSelectFields): PrismaQueryBuilder<TModel, PrismaSelectResult<TModel, TSelectFields, any>, TWhereInput, TOrderByInput, TInclude, TSelectInput, any>; Select<TSelectFields extends TSelectInput, TNewExpectedResult = TExpectedResult>(select: TSelectFields, expectedResult: TNewExpectedResult): PrismaQueryBuilder<TModel, PrismaSelectResult<TModel, TSelectFields, TNewExpectedResult>, TWhereInput, TOrderByInput, TInclude, TSelectInput, TNewExpectedResult>; SelectAll(): PrismaQueryBuilder<TModel, TModel, TWhereInput, TOrderByInput, TInclude, TSelectInput, TModel>; SelectAs<TSelectFields extends TSelectInput>(select: TSelectFields): TypedSelector<TModel, TSelectFields, TWhereInput, TOrderByInput, TInclude, TSelectInput>; Include<TIncludeFields extends TInclude, TNewExpectedResult = TExpectedResult>(include: TIncludeFields, expectedResult?: TNewExpectedResult): PrismaQueryBuilder<TModel, PrismaIncludeResult<TSelect, TIncludeFields, TNewExpectedResult>, TWhereInput, TOrderByInput, TInclude, TSelectInput, TNewExpectedResult>; private mergeIncludes; OrderBy(orderBy: TOrderByInput): this; Take(n: number): this; Skip(n: number): this; ToArray(): Promise<TSelect[]>; First(): Promise<TSelect | null>; Project<TResult>(selector: (item: TSelect) => TResult): Promise<IEnumerable<TResult>>; GroupBy<TKey, TElement = TSelect>(keySelector: (item: TSelect) => TKey, elementSelector?: (item: TSelect) => TElement, resultSelector?: (key: TKey, group: IEnumerable<TElement>) => any): Promise<any>; private ExecuteQueryAndMap; ToList(): Promise<IList<TSelect>>; ToEnumerable(): Promise<IEnumerable<TSelect>>; Execute(): Promise<IAsyncEnumerable<TSelect>>; ToAsyncEnumerable(): Promise<IAsyncEnumerable<TSelect>>; ToEnumerableAsync(): Promise<IEnumerable<TSelect>>; AsEnumerable(): Promise<IEnumerable<TSelect>>; ToArrayAsync(): Promise<TSelect[]>; FirstOrDefault(): Promise<TSelect | undefined>; Single(): Promise<TSelect | null>; Count(): Promise<number>; Exists(): Promise<boolean>; Any(): Promise<boolean>; Min(field: string): Promise<any>; Max(field: string): Promise<any>; Sum(field: string): Promise<number>; Avg(field: string): Promise<number>; Paginate(pageNumber: number, pageSize: number): Promise<{ data: TSelect[]; total: number; page: number; pageSize: number; }>; AsQueryable(): IQueryable<TModel, TSelect, TWhereInput, TOrderByInput, TInclude, TSelectInput, any, any, any>; AsNoTrackingQueryable(): IQueryable<TModel, TSelect, TWhereInput, TOrderByInput, TInclude, TSelectInput, any, any, any>; buildExpression(): IPrismaQueryExpression; static From<T>(source: IQueryable<T>): PrismaQueryBuilder<T>; AsAsyncEnumerable(): Promise<IAsyncEnumerable<TSelect>>; CopyTo<TNewModel, TNewSelect = TNewModel>(newPrismaModel: any): PrismaQueryBuilder<TNewModel, TNewSelect>; get Provider(): PrismaQueryProvider; get Expression(): IPrismaQueryExpression; } declare class TypedSelector<TModel, TSelectFields, TWhereInput, TOrderByInput, TInclude, TSelectInput> { private builder; private select; constructor(builder: PrismaQueryBuilder<TModel, any, TWhereInput, TOrderByInput, TInclude, TSelectInput, any>, select: TSelectFields); As<TExpectedResult>(): PrismaQueryBuilder<TModel, PrismaSelectResult<TModel, TSelectFields, TExpectedResult>, TWhereInput, TOrderByInput, TInclude, TSelectInput, TExpectedResult>; Inferred(): PrismaQueryBuilder<TModel, PrismaSelectResult<TModel, TSelectFields, any>, TWhereInput, TOrderByInput, TInclude, TSelectInput, any>; } export {};