@nestjsx/crud-typeorm
Version:
NestJs CRUD for RESTful APIs - TypeORM
68 lines (67 loc) • 4.16 kB
TypeScript
import { CreateManyDto, CrudRequest, CrudRequestOptions, CrudService, GetManyDefaultResponse, JoinOption, JoinOptions, QueryOptions } from '@nestjsx/crud';
import { ParsedRequestParams, QueryFilter, QueryJoin, QuerySort, SCondition, SConditionKey, ComparisonOperator } from '@nestjsx/crud-request';
import { ClassType } from '@nestjsx/util';
import { Brackets, ObjectLiteral, Repository, SelectQueryBuilder, DeepPartial, WhereExpression, ConnectionOptions, EntityMetadata } from 'typeorm';
interface IAllowedRelation {
alias?: string;
nested: boolean;
name: string;
path: string;
columns: string[];
primaryColumns: string[];
allowedColumns: string[];
}
export declare class TypeOrmCrudService<T> extends CrudService<T> {
protected repo: Repository<T>;
protected dbName: ConnectionOptions['type'];
protected entityColumns: string[];
protected entityPrimaryColumns: string[];
protected entityHasDeleteColumn: boolean;
protected entityColumnsHash: ObjectLiteral;
protected entityRelationsHash: Map<string, IAllowedRelation>;
protected sqlInjectionRegEx: RegExp[];
constructor(repo: Repository<T>);
readonly findOne: Repository<T>['findOne'];
readonly find: Repository<T>['find'];
readonly count: Repository<T>['count'];
protected readonly entityType: ClassType<T>;
protected readonly alias: string;
getMany(req: CrudRequest): Promise<GetManyDefaultResponse<T> | T[]>;
getOne(req: CrudRequest): Promise<T>;
createOne(req: CrudRequest, dto: DeepPartial<T>): Promise<T>;
createMany(req: CrudRequest, dto: CreateManyDto<DeepPartial<T>>): Promise<T[]>;
updateOne(req: CrudRequest, dto: DeepPartial<T>): Promise<T>;
recoverOne(req: CrudRequest): Promise<T>;
replaceOne(req: CrudRequest, dto: DeepPartial<T>): Promise<T>;
deleteOne(req: CrudRequest): Promise<void | T>;
getParamFilters(parsed: CrudRequest['parsed']): ObjectLiteral;
createBuilder(parsed: ParsedRequestParams, options: CrudRequestOptions, many?: boolean, withDeleted?: boolean): Promise<SelectQueryBuilder<T>>;
protected doGetMany(builder: SelectQueryBuilder<T>, query: ParsedRequestParams, options: CrudRequestOptions): Promise<GetManyDefaultResponse<T> | T[]>;
protected onInitMapEntityColumns(): void;
protected getOneOrFail(req: CrudRequest, shallow?: boolean, withDeleted?: boolean): Promise<T>;
protected prepareEntityBeforeSave(dto: DeepPartial<T>, parsed: CrudRequest['parsed']): T;
protected getAllowedColumns(columns: string[], options: QueryOptions): string[];
protected getEntityColumns(entityMetadata: EntityMetadata): {
columns: string[];
primaryColumns: string[];
};
protected getRelationMetadata(field: string, options: JoinOption): IAllowedRelation;
protected setJoin(cond: QueryJoin, joinOptions: JoinOptions, builder: SelectQueryBuilder<T>): boolean;
protected setAndWhere(cond: QueryFilter, i: any, builder: SelectQueryBuilder<T> | WhereExpression): void;
protected setOrWhere(cond: QueryFilter, i: any, builder: SelectQueryBuilder<T> | WhereExpression): void;
protected setSearchCondition(builder: SelectQueryBuilder<T>, search: SCondition, condition?: SConditionKey): void;
protected builderAddBrackets(builder: SelectQueryBuilder<T>, condition: SConditionKey, brackets: Brackets): void;
protected builderSetWhere(builder: SelectQueryBuilder<T>, condition: SConditionKey, field: string, value: any, operator?: ComparisonOperator): void;
protected setSearchFieldObjectCondition(builder: SelectQueryBuilder<T>, condition: SConditionKey, field: string, object: any): void;
protected getSelect(query: ParsedRequestParams, options: QueryOptions): string[];
protected getSort(query: ParsedRequestParams, options: QueryOptions): ObjectLiteral;
protected getFieldWithAlias(field: string, sort?: boolean): string;
protected mapSort(sort: QuerySort[]): ObjectLiteral;
protected mapOperatorsToQuery(cond: QueryFilter, param: any): {
str: string;
params: ObjectLiteral;
};
private checkFilterIsArray;
private checkSqlInjection;
}
export {};