import { JoinType } from "../enums/join-type"; import { RowResult } from "../../core/row-result"; import { QueryCompiled } from "../../core/query-compiled"; import { MapperTable } from "../../mapper-table"; import { ProjectionBuilder } from "../projection-builder"; import { WhereBuilder } from "../where-builder"; import { DatabaseBase, DatabaseResult } from "../../definitions/database-definition"; import { MetadataTable } from "../../metadata-table"; import { QueryBuilder } from "./query-builder"; import { ExpressionOrColumn, ParamType, TypeOrderBy, ValueTypeToParse } from "../../core/utils"; import { OrderBy } from "../../core/enums/order-by"; import { HavingBuilder } from "../having-builder"; import { LambdaExpression } from "lambda-expression"; import { JoinQueryBuilder } from "./join-query-builder"; import { ProjectionsHelper } from "../../core/projections-helper"; import { ColumnRef } from "../../core/column-ref"; import { SqlCompilable } from "../sql-compilable"; import { SqlBase } from "../sql-base"; import { Observable } from "rxjs"; export declare class Query extends SqlBase { private _queryT; private _queryBuilder; private _queryReadableBuilder; private _getMapper; constructor(_queryT: (new () => TType) | QueryBuilder, { alias, getMapper, mapperTable, database, enableLog }?: { alias?: string; getMapper?: (tKey: (new () => any) | string) => MetadataTable; mapperTable?: MapperTable; database?: DatabaseBase; enableLog?: boolean; }); clone(): Query; compile(): QueryCompiled[]; ignoreQueryFilters(): Query; setParamsQueryFilter(params: { [s: string]: ParamType; }): Query; /** * @link QueryBuilder */ alias(): string; ref(expression: ExpressionOrColumn): ColumnRef; from(query: QueryCompiled[] | SqlCompilable): Query; union(query: QueryCompiled[] | SqlCompilable): Query; unionAll(query: QueryCompiled[] | SqlCompilable): Query; join(queryTJoin: (new () => TJoin) | QueryBuilder | { _builder: () => QueryBuilder; }, onWhere: (where: WhereBuilder) => void, join: (joinQuery: JoinQueryBuilder) => void, type?: JoinType, alias?: string, ignoreQueryFilters?: boolean): Query; createWhere(): WhereBuilder; where(where: (whereCallback: WhereBuilder) => void): Query; whereExp(expression: LambdaExpression): Query; /** * @param projectionCallback */ projection(projectionCallback: (projection: ProjectionBuilder) => void): Query; select(...expressions: Array>): Query; limit(limit: number, offset?: number): Query; orderBy(expression: ExpressionOrColumn, order?: OrderBy): Query; asc(expression: TypeOrderBy): Query; desc(expression: TypeOrderBy): Query; groupBy(expression: ExpressionOrColumn, havingCallback?: (having: HavingBuilder, projection: ProjectionsHelper) => void): Query; /** * Find projection by alias and result index (base 1...N+1) * @param projectionAlias alias to find the projection * @returns index (base 1...N+1) */ getIndexProjection(projectionAlias: ExpressionOrColumn): number; toString(): string; /** * @link QueryReadableBuilder * @param cascade use cascade fetch in `hasMany` mapper (default = true) * @param mapper mapper table metadata * @param database database to execute query * @returns Array of `TType` */ executeAndRead({ cascade, database, mapperTable }?: { cascade?: boolean; database?: DatabaseBase; mapperTable?: MapperTable; }): Observable; /** * Execute query and parse to @type {TType} * @param cascade use cascade fetch in `hasMany` mapper (default = true) * @returns Array of @type {TType} */ toList({ cascade, database }?: { cascade?: boolean; database?: DatabaseBase; }): Observable; /** * Execute query and parse to @type {TPrimitiveType} * @param cascade use cascade fetch in `hasMany` mapper (default = true) * @returns first or default @type {TPrimitiveType} */ toSingle({ cascade, database, where, _default }?: { cascade?: boolean; database?: DatabaseBase; where?: (whereCallback: WhereBuilder) => void; _default?: any; }): Observable; /** * Execute query and parse to @type {TPrimitiveType} * @param cascade use cascade fetch in `hasMany` mapper (default = true) * @returns Array of @type {TPrimitiveType} */ toSingleList({ cascade, database }?: { cascade?: boolean; database?: DatabaseBase; }): Observable; /** * Allow each parse items cursor * @param mapper callback mapper item * @param cascade use cascade fetch in `hasMany` mapper (default = true) * @returns Array of @type {T} */ mapper(mapper: (row: RowResult) => T, { cascade, database }?: { cascade?: boolean; database?: DatabaseBase; }): Observable; /** * Get count rows (count by key column) by query * @param where where for apply in query * @returns count items */ count({ cascade, database, where }?: { cascade?: boolean; database?: DatabaseBase; where?: (whereCallback: WhereBuilder) => void; }): Observable; /** * Get first or default item by query * @param where where for apply in query * @param cascade use cascade fetch in `hasMany` mapper (default = true) * @param _default default value if not found any item * @returns first or default item by query */ firstOrDefault({ cascade, database, where, _default }?: { cascade?: boolean; database?: DatabaseBase; where?: (whereCallback: WhereBuilder) => void; _default?: any; }): Observable; /** * @deprecated use `.mapper` * Supported up to version 1.0.0 */ read(cursor: any, newable: new () => TReader, mapperTable: MapperTable): TReader[]; /** * @deprecated use `.mapper` * Supported up to version 1.0.0 */ toListParse(metadataParse: MetadataTable): Observable; /** * @deprecated use `.mapper` * Supported up to version 1.0.0 */ toListTo(newable: new () => TReader, mapperTable: MapperTable): Observable; /** * @deprecated use `.mapper` * Supported up to version 1.0.0 */ toCast(): Observable; /** * @deprecated use `.mapper` * Supported up to version 1.0.0 */ map(mapper: (row: any) => any): Observable; /** * @hidden */ _builder(): QueryBuilder; protected model(): TType; protected builderCompiled(): QueryCompiled; protected resolveDependencyByValue(dependency: MapperTable, value: ValueTypeToParse, index: number): QueryCompiled; protected resolveDependency(dependency: MapperTable): QueryCompiled; protected checkDatabaseResult(promise: Observable): Observable; private getMapper; private fetchModels; private fetchModel; protected dependencies(): MapperTable[]; }