@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
126 lines (125 loc) • 7.75 kB
TypeScript
export interface IEnumerable<T> {
[Symbol.iterator](): Iterator<T>;
readonly length?: number;
ToArray(): T[];
ToList(): IList<T>;
Count(predicate?: (value: T, index?: number, list?: T[]) => boolean): number;
First(predicate?: (value: T, index?: number, list?: T[]) => boolean): T;
FirstOrDefault(): T | undefined;
FirstOrDefault(predicate: (value: T, index?: number, list?: T[]) => boolean): T | undefined;
FirstOrDefault(defaultValue?: T): T | undefined;
FirstOrDefault(predicate?: (value: T, index?: number, list?: T[]) => boolean, defaultValue?: T): T | undefined;
Last(predicate?: (value: T, index?: number, list?: T[]) => boolean): T;
LastOrDefault(): T | undefined;
LastOrDefault(predicate: (value: T, index?: number, list?: T[]) => boolean): T | undefined;
LastOrDefault(defaultValue?: T): T | undefined;
LastOrDefault(predicate?: (value: T, index?: number, list?: T[]) => boolean, defaultValue?: T): T | undefined;
Single(predicate?: (value: T, index?: number, list?: T[]) => boolean): T;
SingleOrDefault(defaultValue?: T): T | undefined;
ElementAt(index: number): T;
ElementAtOrDefault(index: number): T | undefined;
Where(predicate: (value: T, index?: number, list?: T[]) => boolean): IEnumerable<T>;
Select<TResult>(selector: (element: T, index: number) => TResult): IEnumerable<TResult>;
SelectMany<TResult>(selector: (element: T, index: number) => IEnumerable<TResult>): IEnumerable<TResult>;
OrderBy(keySelector: (key: T) => any, comparer?: (a: T, b: T) => number): IOrderedEnumerable<T>;
OrderByDescending(keySelector: (key: T) => any, comparer?: (a: T, b: T) => number): IOrderedEnumerable<T>;
Distinct(): IEnumerable<T>;
DistinctBy(keySelector: (key: T) => string | number): IEnumerable<T>;
Union(list: IEnumerable<T>): IEnumerable<T>;
Intersect(source: IEnumerable<T>): IEnumerable<T>;
Except(source: IEnumerable<T>): IEnumerable<T>;
Take(amount: number): IEnumerable<T>;
Skip(amount: number): IEnumerable<T>;
TakeWhile(predicate: (value: T, index?: number, list?: T[]) => boolean): IEnumerable<T>;
SkipWhile(predicate: (value: T, index?: number, list?: T[]) => boolean): IEnumerable<T>;
Aggregate<U>(accumulator: (accum: U, value: T, index: number, list?: T[]) => any, initialValue: U): any;
Sum(transform?: (value?: T, index?: number, list?: T[]) => number): number;
Average(transform?: (value?: T, index?: number, list?: T[]) => number): number;
Min(selector?: (element: T, index: number) => number): number;
Max(selector?: (element: T, index: number) => number): number;
Any(predicate?: (value: T, index?: number, list?: T[]) => boolean): boolean;
All(predicate: (value: T, index?: number, list?: T[]) => boolean): boolean;
Contains(element: T): boolean;
Join<U, R>(list: IEnumerable<U>, key1: (key: T) => any, key2: (key: U) => any, result: (first: T, second: U) => R): IEnumerable<R>;
GroupJoin<U, R>(list: IEnumerable<U>, key1: (k: T) => any, key2: (k: U) => any, result: (first: T, second: IEnumerable<U>) => R): IEnumerable<R>;
GroupBy<TResult = T>(grouper: (key: T) => string | number, mapper?: (element: T) => TResult): IEnumerable<IGrouping<string | number, TResult>>;
ToAsyncEnumerable(): IAsyncEnumerable<T>;
ForEach(action: (value?: T, index?: number, list?: T[]) => any): void;
Reverse(): IEnumerable<T>;
Concat(list: IEnumerable<T>): IEnumerable<T>;
}
export interface IList<T> extends IEnumerable<T> {
Add(element: T): void;
AddRange(elements: T[] | IEnumerable<T>): void;
Insert(index: number, element: T): void | Error;
Remove(element: T): boolean;
RemoveAt(index: number): void;
RemoveAll(predicate: (value: T, index?: number, list?: T[]) => boolean): IList<T>;
Clear(): void;
IndexOf(element: T): number;
LastIndexOf(element: T): number;
readonly length: number;
get(index: number): T;
set(index: number, value: T): void;
Where(predicate: (value: T, index?: number, list?: T[]) => boolean): IList<T>;
Select<TResult>(selector: (element: T, index: number) => TResult): IList<TResult>;
Reverse(): IList<T>;
Take(amount: number): IList<T>;
Skip(amount: number): IList<T>;
Distinct(): IList<T>;
Sort(comparer?: (a: T, b: T) => number): IList<T>;
}
export interface IOrderedEnumerable<T> extends IEnumerable<T> {
ThenBy(keySelector: (key: T) => any): IOrderedEnumerable<T>;
ThenByDescending(keySelector: (key: T) => any): IOrderedEnumerable<T>;
Where(predicate: (value: T, index?: number, list?: T[]) => boolean): IOrderedEnumerable<T>;
Take(amount: number): IOrderedEnumerable<T>;
Skip(amount: number): IOrderedEnumerable<T>;
}
export interface IAsyncEnumerable<T> {
[Symbol.asyncIterator](): AsyncIterator<T>;
ToArrayAsync(): Promise<T[]>;
ToListAsync(): Promise<IList<T>>;
CountAsync(): Promise<number>;
CountAsync(predicate: (item: T) => Promise<boolean> | boolean): Promise<number>;
FirstAsync(): Promise<T>;
FirstAsync(predicate: (item: T) => Promise<boolean> | boolean): Promise<T>;
FirstOrDefaultAsync(): Promise<T | undefined>;
FirstOrDefaultAsync(predicate: (item: T) => Promise<boolean> | boolean): Promise<T | undefined>;
LastAsync(): Promise<T>;
LastAsync(predicate: (item: T) => Promise<boolean> | boolean): Promise<T>;
LastOrDefaultAsync(): Promise<T | undefined>;
LastOrDefaultAsync(predicate: (item: T) => Promise<boolean> | boolean): Promise<T | undefined>;
SingleAsync(): Promise<T>;
SingleAsync(predicate: (item: T) => Promise<boolean> | boolean): Promise<T>;
SingleOrDefaultAsync(): Promise<T | undefined>;
SingleOrDefaultAsync(predicate: (item: T) => Promise<boolean> | boolean): Promise<T | undefined>;
Where(predicate: (item: T, index?: number) => Promise<boolean> | boolean): IAsyncEnumerable<T>;
Select<TResult>(selector: (item: T, index?: number) => Promise<TResult> | TResult): IAsyncEnumerable<TResult>;
SelectMany<TResult>(selector: (item: T) => IAsyncEnumerable<TResult> | IEnumerable<TResult>): IAsyncEnumerable<TResult>;
OrderBy<TKey>(keySelector: (item: T) => TKey): IOrderedAsyncEnumerable<T>;
OrderByDescending<TKey>(keySelector: (item: T) => TKey): IOrderedAsyncEnumerable<T>;
Distinct(): IAsyncEnumerable<T>;
Distinct<TKey>(keySelector: (item: T) => TKey): IAsyncEnumerable<T>;
Take(count: number): IAsyncEnumerable<T>;
Skip(count: number): IAsyncEnumerable<T>;
TakeWhile(predicate: (item: T) => Promise<boolean> | boolean): IAsyncEnumerable<T>;
SkipWhile(predicate: (item: T) => Promise<boolean> | boolean): IAsyncEnumerable<T>;
AggregateAsync<TAccumulate>(seed: TAccumulate, func: (accumulate: TAccumulate, item: T) => Promise<TAccumulate> | TAccumulate): Promise<TAccumulate>;
SumAsync(selector?: (item: T) => number): Promise<number>;
AverageAsync(selector?: (item: T) => number): Promise<number>;
MinAsync(selector?: (item: T) => number): Promise<number>;
MaxAsync(selector?: (item: T) => number): Promise<number>;
AnyAsync(): Promise<boolean>;
AnyAsync(predicate: (item: T) => Promise<boolean> | boolean): Promise<boolean>;
AllAsync(predicate: (item: T) => Promise<boolean> | boolean): Promise<boolean>;
ContainsAsync(item: T): Promise<boolean>;
ToEnumerable(): Promise<IEnumerable<T>>;
}
export interface IOrderedAsyncEnumerable<T> extends IAsyncEnumerable<T> {
ThenBy<TKey>(keySelector: (item: T) => TKey): IOrderedAsyncEnumerable<T>;
ThenByDescending<TKey>(keySelector: (item: T) => TKey): IOrderedAsyncEnumerable<T>;
}
export interface IGrouping<TKey, TElement> extends IEnumerable<TElement> {
readonly Key: TKey;
}