slim-ef
Version:
An implementation of basic entity framework functionnalities in typescript
59 lines (58 loc) • 3.47 kB
TypeScript
import { ISpecification } from '../specification/specification.interface';
import { ExpressionResult, SlimExpressionFunction } from 'slim-exp';
import { IDbContext, IUnitOfWork } from '../uow';
import { EntityBase, IDbSet, Includable, IQueryable, IQueryableSelectionResult } from './interfaces';
import { DeepPartial } from 'typeorm';
import { IInternalDbContext } from '../uow/_internal.interface';
export declare const UnderlyingType: unique symbol;
export declare class DbSet<T extends EntityBase, R extends T | T[] = T, P = T, E = T | DeepPartial<T>> implements IDbSet<T, R, P, E> {
context: (IDbContext | IUnitOfWork) & IInternalDbContext;
private _queryTypeToExecute;
private _baseSpec;
private _lastInclude;
private _currentSkip;
private _currentTake;
private _ignoreFilters;
private _underlyingType;
private _onGoingPromise;
constructor(context: IDbContext | IUnitOfWork);
private get [UnderlyingType]();
private set [UnderlyingType](value);
add(...entities: E[]): Promise<void> | void;
update(...entities: E[]): Promise<void> | void;
unTrack(...entities: E[]): Promise<void> | void;
remove(...entities: E[]): Promise<void> | void;
find(id: any): Promise<T>;
exists(id: any): Promise<boolean>;
loadRelatedData(entity: T): Promise<T>;
firstOrDefault(): Promise<T>;
firstOrDefault<C extends object>(predicate: SlimExpressionFunction<T, boolean, C>, context: C): Promise<T>;
firstOrDefault<C extends object>(predicate?: SlimExpressionFunction<T, boolean, C>): Promise<T>;
first(): Promise<T>;
first<C extends object>(predicate: SlimExpressionFunction<T, boolean, C>, context: C): Promise<T>;
first<C extends object>(func?: SlimExpressionFunction<T, boolean, C>): Promise<T>;
include<S extends object>(navigationPropertyPath: SlimExpressionFunction<T, Includable<S>>): IQueryable<T, R, S>;
thenInclude<S extends object>(navigationPropertyPath: SlimExpressionFunction<P, Includable<S>>): IQueryable<T, R, S>;
where<C extends object>(predicate: SlimExpressionFunction<T, boolean, C>, context?: C): IQueryable<T, R, P>;
take(count: number): IQueryable<T, R, P>;
skip(count: number): IQueryable<T, R, P>;
select<V extends object>(selector: SlimExpressionFunction<T, V>): IQueryableSelectionResult<V, R>;
private _getIncludePaths;
private _extractKeyFields;
count<C extends object>(predicate?: SlimExpressionFunction<T, boolean, C>): Promise<number>;
sum(selector: SlimExpressionFunction<T, number>): Promise<number>;
average(selector: SlimExpressionFunction<T, number>): Promise<number>;
max<RT extends ExpressionResult>(selector: SlimExpressionFunction<T, RT>): Promise<RT>;
min<RT extends ExpressionResult>(selector: SlimExpressionFunction<T, RT>): Promise<RT>;
orderBy(keySelector: SlimExpressionFunction<T>): any;
thenOrderBy(keySelector: SlimExpressionFunction<T>): IQueryable<T, R, P>;
groupBy(keySelector: SlimExpressionFunction<T>): IQueryable<T, R, P>;
thenGroupBy(keySelector: SlimExpressionFunction<T>): IQueryable<T, R, P>;
orderByDescending(keySelector: SlimExpressionFunction<T>): IQueryable<T, R, P>;
asSpecification(): ISpecification<T>;
ignoreQueryFilters(): IQueryable<T, R, P>;
distinct(): this;
fromSpecification(spec: ISpecification<T>): IQueryable<T, T>;
toList(): Promise<T[]>;
private execute;
}