import { ExpressionOrColumn, ExpressionProjection, ExpressionQuery, TQuery } from "../core/utils"; import { ColumnRef } from "../core/column-ref"; import { PlanRef } from "../core/plan-ref"; import { ProjectionCompiled } from "./projection-compiled"; import { Projection } from "./enums/projection"; import { ProjectionCase } from "./projection-case"; import { MetadataTable } from "../metadata-table"; import { ProjectionsHelper } from "../core/projections-helper"; import { ProjectionModel } from "./projection-model"; export declare class ProjectionBuilder { private _typeT; private _aliasTable; private _addAliasTableToAlias; private _getMapper?; private _projections; private readonly _projectionsUtils; constructor(_typeT: new () => T, _aliasTable: string, _addAliasTableToAlias?: boolean, addAliasDefault?: boolean, _getMapper?: (tKey: (new () => any) | string) => MetadataTable); all(): void; wildcard(): void; allByMap(metadata: MetadataTable): void; proj(): ProjectionsHelper; ref(expression: ExpressionOrColumn, alias?: string): ColumnRef; plan(value: any): PlanRef; group(alias: string, ...projections: Array>): ProjectionBuilder; /** * @deprecated Use `add` * @param column * @param alias */ column(column: string, alias?: string): ProjectionBuilder; columns(...expressions: Array>): ProjectionBuilder; add(expression: ExpressionQuery, alias?: string): ProjectionBuilder; remove(expression: ExpressionOrColumn): ProjectionBuilder; clean(): ProjectionBuilder; sum(expression?: ExpressionOrColumn | string, alias?: string): ProjectionBuilder; max(expression?: ExpressionOrColumn, alias?: string): ProjectionBuilder; min(expression?: ExpressionOrColumn, alias?: string): ProjectionBuilder; avg(expression?: ExpressionOrColumn, alias?: string): ProjectionBuilder; /** * @deprecated use `.avg().round(expression)` * * @param {ExpressionOrColumn} expression * @param {string} [alias] * @returns {ProjectionBuilder} * @memberof ProjectionBuilder */ avgRound(expression: ExpressionOrColumn, alias?: string): ProjectionBuilder; round(expression?: ExpressionOrColumn, alias?: string): ProjectionBuilder; count(expression?: ExpressionOrColumn, alias?: string): ProjectionBuilder; /** * @deprecated use `.count().distinct(expression)` * * @param {ExpressionOrColumn} expression * @param {string} [alias] * @returns {ProjectionBuilder} * @memberof ProjectionBuilder */ countDistinct(expression: ExpressionOrColumn, alias?: string): ProjectionBuilder; cast(expression?: ExpressionOrColumn, alias?: string): ProjectionBuilder; distinct(expression?: ExpressionOrColumn, alias?: string): ProjectionBuilder; /** * https://www.sqlite.org/lang_expr.html * CASE {expression} {when} END * @param caseCallback * @param expression * @param alias */ case(caseCallback: (caseInstance: ProjectionCase) => void, expression?: ExpressionOrColumn, alias?: string): ProjectionBuilder; coalesce(expression: ExpressionOrColumn, alias?: string): ProjectionBuilder; coalesceP(projectionCallback: (projection: ProjectionBuilder) => void, defaultValue: any, alias: string): ProjectionBuilder; /** * @deprecated use `.proj()` * * @param {Projection} projection * @param {ExpressionOrColumn} expression * @param {string} [alias=""] * @param {any[]} [args=[]] * @returns * @memberof ProjectionBuilder */ projection(projection: Projection, expression: ExpressionOrColumn, alias?: string, args?: any[]): ProjectionCompiled; coalesceBuilder(expression: ExpressionOrColumn, defaultValue: any): string; subQuery(subQuery: TQuery, alias?: string): ProjectionBuilder; result(): ProjectionModel[]; private selectAllColumns; private compileCase; private buildProjectionWithExpression; private apply; private applyProjection; private addAliasTable; private builderProjection; private buildArgs; private defaultAliasAs; private createProjection; private buildColumn; }