@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
TypeScript
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 {};