@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
81 lines (80 loc) • 7.94 kB
TypeScript
import { IEnumerable, IQueryable, IAsyncEnumerable } from '../../collections';
import { PrismaSelectResult, PrismaIncludeResult } from './prisma-types';
export declare class PrismaUnifiedBuilder<TModel = unknown, TSelect = TModel, TWhereInput = any, TOrderByInput = any, TInclude = any, TSelectInput = any, TCreateInput = any, TUpdateInput = any, TWhereUniqueInput = any, TExpectedResult = Record<string, any>> {
private readonly queryBuilder;
private readonly mutationBuilder;
constructor(prismaModel: any, modelName?: string);
factory: () => PrismaUnifiedBuilder<TModel, TSelect, TWhereInput, TOrderByInput, TInclude, TSelectInput, TCreateInput, TUpdateInput, TWhereUniqueInput, TExpectedResult>;
Where(where: TWhereInput): this;
Select<TExpectedType = any>(select: TSelectInput): PrismaUnifiedBuilder<TModel, TExpectedType, TWhereInput, TOrderByInput, TInclude, TSelectInput, TCreateInput, TUpdateInput, TWhereUniqueInput, TExpectedType>;
Select<TSelectFields extends TSelectInput>(select: TSelectFields): PrismaUnifiedBuilder<TModel, PrismaSelectResult<TModel, TSelectFields, any>, TWhereInput, TOrderByInput, TInclude, TSelectInput, TCreateInput, TUpdateInput, TWhereUniqueInput, any>;
Select<TSelectFields extends TSelectInput, TNewExpectedResult = TExpectedResult>(select: TSelectFields, expectedResult: TNewExpectedResult): PrismaUnifiedBuilder<TModel, PrismaSelectResult<TModel, TSelectFields, TNewExpectedResult>, TWhereInput, TOrderByInput, TInclude, TSelectInput, TCreateInput, TUpdateInput, TWhereUniqueInput, TNewExpectedResult>;
SelectAs<TSelectFields extends TSelectInput>(select: TSelectFields): UnifiedTypedSelector<TModel, TSelectFields, TWhereInput, TOrderByInput, TInclude, TSelectInput, TCreateInput, TUpdateInput, TWhereUniqueInput>;
Include<TIncludeFields extends TInclude, TNewExpectedResult = TExpectedResult>(include: TIncludeFields, expectedResult?: TNewExpectedResult): PrismaUnifiedBuilder<TModel, PrismaIncludeResult<TSelect, TIncludeFields, TNewExpectedResult>, TWhereInput, TOrderByInput, TInclude, TSelectInput, TCreateInput, TUpdateInput, TWhereUniqueInput, TNewExpectedResult>;
OrderBy(orderBy: TOrderByInput): this;
Take(n: number): this;
Skip(n: number): this;
ToEnumerable(): Promise<IEnumerable<TSelect>>;
ToArray(): Promise<TSelect[]>;
First(): Promise<TSelect | null>;
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>;
Project<TResult>(selector: (item: TSelect) => TResult): Promise<IEnumerable<TResult>>;
ToAsyncEnumerable(): Promise<IAsyncEnumerable<TSelect>>;
AsAsyncEnumerable(): Promise<IAsyncEnumerable<TSelect>>;
AsEnumerable(): Promise<IEnumerable<TSelect>>;
ToEnumerableAsync(): Promise<IEnumerable<TSelect>>;
ToArrayAsync(): Promise<TSelect[]>;
Create(data: TCreateInput): Promise<TModel>;
CreateMany(data: TCreateInput[]): Promise<{
count: number;
}>;
Update(where: TWhereUniqueInput, data: TUpdateInput): Promise<TModel>;
UpdateMany(where: TWhereInput, data: TUpdateInput): Promise<{
count: number;
}>;
Delete(where: TWhereUniqueInput): Promise<TModel>;
DeleteMany(where: TWhereInput): Promise<{
count: number;
}>;
BulkUpsert(records: Array<{
where: TWhereUniqueInput;
create: TCreateInput;
update: TUpdateInput;
}>): Promise<TModel[]>;
Transaction<T>(operation: (builder: PrismaUnifiedBuilder<TModel, TSelect, TWhereInput, TOrderByInput, TInclude, TSelectInput, TCreateInput, TUpdateInput, TWhereUniqueInput>) => Promise<T>): Promise<T>;
private getPrismaClient;
private getModelName;
AsQueryable(): IQueryable<TModel, TSelect, TWhereInput, TOrderByInput, TInclude, TSelectInput, TCreateInput, TUpdateInput, TWhereUniqueInput>;
ContextFactory(): PrismaUnifiedBuilder<TModel, TSelect, TWhereInput, TOrderByInput, TInclude, TSelectInput, TCreateInput, TUpdateInput, TWhereUniqueInput>;
Fresh(): PrismaUnifiedBuilder<TModel, TSelect, TWhereInput, TOrderByInput, TInclude, TSelectInput, TCreateInput, TUpdateInput, TWhereUniqueInput>;
New(): PrismaUnifiedBuilder<TModel, TSelect, TWhereInput, TOrderByInput, TInclude, TSelectInput, TCreateInput, TUpdateInput, TWhereUniqueInput>;
WhereEquals(field: keyof TModel, value: string, caseSensitive?: boolean): PrismaUnifiedBuilder<TModel, TSelect, TWhereInput, TOrderByInput, TInclude, TSelectInput, TCreateInput, TUpdateInput, TWhereUniqueInput>;
WhereContains(field: keyof TModel, value: string, caseSensitive?: boolean): PrismaUnifiedBuilder<TModel, TSelect, TWhereInput, TOrderByInput, TInclude, TSelectInput, TCreateInput, TUpdateInput, TWhereUniqueInput>;
WhereStartsWith(field: keyof TModel, value: string, caseSensitive?: boolean): PrismaUnifiedBuilder<TModel, TSelect, TWhereInput, TOrderByInput, TInclude, TSelectInput, TCreateInput, TUpdateInput, TWhereUniqueInput>;
WhereEndsWith(field: keyof TModel, value: string, caseSensitive?: boolean): PrismaUnifiedBuilder<TModel, TSelect, TWhereInput, TOrderByInput, TInclude, TSelectInput, TCreateInput, TUpdateInput, TWhereUniqueInput>;
WhereIn(field: keyof TModel, values: any[]): PrismaUnifiedBuilder<TModel, TSelect, TWhereInput, TOrderByInput, TInclude, TSelectInput, TCreateInput, TUpdateInput, TWhereUniqueInput>;
WhereNotIn(field: keyof TModel, values: any[]): PrismaUnifiedBuilder<TModel, TSelect, TWhereInput, TOrderByInput, TInclude, TSelectInput, TCreateInput, TUpdateInput, TWhereUniqueInput>;
WhereGreaterThan(field: keyof TModel, value: any): PrismaUnifiedBuilder<TModel, TSelect, TWhereInput, TOrderByInput, TInclude, TSelectInput, TCreateInput, TUpdateInput, TWhereUniqueInput>;
WhereGreaterThanOrEqual(field: keyof TModel, value: any): PrismaUnifiedBuilder<TModel, TSelect, TWhereInput, TOrderByInput, TInclude, TSelectInput, TCreateInput, TUpdateInput, TWhereUniqueInput>;
WhereLessThan(field: keyof TModel, value: any): PrismaUnifiedBuilder<TModel, TSelect, TWhereInput, TOrderByInput, TInclude, TSelectInput, TCreateInput, TUpdateInput, TWhereUniqueInput>;
WhereLessThanOrEqual(field: keyof TModel, value: any): PrismaUnifiedBuilder<TModel, TSelect, TWhereInput, TOrderByInput, TInclude, TSelectInput, TCreateInput, TUpdateInput, TWhereUniqueInput>;
WhereBetween(field: keyof TModel, min: any, max: any): PrismaUnifiedBuilder<TModel, TSelect, TWhereInput, TOrderByInput, TInclude, TSelectInput, TCreateInput, TUpdateInput, TWhereUniqueInput>;
WhereNull(field: keyof TModel): PrismaUnifiedBuilder<TModel, TSelect, TWhereInput, TOrderByInput, TInclude, TSelectInput, TCreateInput, TUpdateInput, TWhereUniqueInput>;
WhereNotNull(field: keyof TModel): PrismaUnifiedBuilder<TModel, TSelect, TWhereInput, TOrderByInput, TInclude, TSelectInput, TCreateInput, TUpdateInput, TWhereUniqueInput>;
}
declare class UnifiedTypedSelector<TModel, TSelectFields, TWhereInput, TOrderByInput, TInclude, TSelectInput, TCreateInput, TUpdateInput, TWhereUniqueInput> {
private builder;
private select;
constructor(builder: PrismaUnifiedBuilder<TModel, any, TWhereInput, TOrderByInput, TInclude, TSelectInput, TCreateInput, TUpdateInput, TWhereUniqueInput, any>, select: TSelectFields);
As<TExpectedResult>(): PrismaUnifiedBuilder<TModel, PrismaSelectResult<TModel, TSelectFields, TExpectedResult>, TWhereInput, TOrderByInput, TInclude, TSelectInput, TCreateInput, TUpdateInput, TWhereUniqueInput, TExpectedResult>;
Inferred(): PrismaUnifiedBuilder<TModel, PrismaSelectResult<TModel, TSelectFields, any>, TWhereInput, TOrderByInput, TInclude, TSelectInput, TCreateInput, TUpdateInput, TWhereUniqueInput, any>;
}
export {};