/// import { DataSource, Pagination, DataResult, IncomingHttpHeaders } from '../../../models/index'; import { ComparisonPredicate, ComparisonOperator, LogicalOperator, BetweenPredicateInput, InPredicateInput, NullPredicateInput } from './commonTypes'; import { IJoinOnClause, JoinOnClauseOperation } from './joinOnClause'; import { IParameterizer } from '../parameterizer'; import { Builtin } from 'ts-essentials'; export declare enum SelectCommandType { SELECT = "SELECT", SELECT_DISTINCT = "SELECT_DISTINCT" } export declare enum AggregateFuncType { COUNT = "COUNT", SUM = "SUM", AVG = "AVG", MIN = "MIN", MAX = "MAX" } export declare enum JoinCommandType { INNER_JOIN = "INNER_JOIN", LEFT_JOIN = "LEFT_JOIN", RIGHT_JOIN = "RIGHT_JOIN", FULL_JOIN = "FULL_JOIN" } export declare enum WherePredicate { WRAPPED = "WRAPPED", LIKE = "LIKE" } export interface AliasColumn { name: string; as?: string; } export interface SelectedColumn extends AliasColumn { aggregateType?: AggregateFuncType; } export interface SelectClauseOperation { command: SelectCommandType; columns: Array; } export interface AliasDataQueryBuilder { builder: IDataQueryBuilder; as: string; } export interface JoinClauseOperation { command: JoinCommandType; onClauses: Array; joinBuilder: AliasDataQueryBuilder; } export declare type JoinClauseCallback = (clause: IJoinOnClause) => void; export interface WhereOperatorInput { column: string; operator: ComparisonOperator; value: string | number | boolean | IDataQueryBuilder; } export declare type BuilderClauseCallback = (builder: IDataQueryBuilder) => void; export declare type WhereInPredicateInput = InPredicateInput & { values: string[] | number[] | IDataQueryBuilder; }; export interface WhereLikePredicateInput { column: string; searchValue: string; } export declare type WherePredicateInput = WhereOperatorInput | BetweenPredicateInput | WhereInPredicateInput | NullPredicateInput | WhereLikePredicateInput | IDataQueryBuilder; export interface WhereClauseOperation { command: WherePredicate | ComparisonPredicate | LogicalOperator | null; data?: WherePredicateInput | Array | AliasDataQueryBuilder; } export declare type GroupByClauseOperations = Array; export interface HavingOperatorInput { column: SelectedColumn; operator: ComparisonOperator; value: string | number | boolean | IDataQueryBuilder; } export declare type HavingInPredicateInput = InPredicateInput & { column: SelectedColumn; }; export interface HavingBetweenPredicateInput { column: SelectedColumn; min: number; max: number; } export declare type HavingPredicateInput = HavingOperatorInput | HavingBetweenPredicateInput | HavingInPredicateInput | NullPredicateInput | IDataQueryBuilder; export interface HavingClauseOperation { command: ComparisonPredicate | LogicalOperator | null; data?: HavingPredicateInput | AliasDataQueryBuilder; } export declare enum Direction { ASC = "ASCENDING", DESC = "DESCENDING" } export interface OrderByClauseOperation { column: string; direction: Direction; } export interface SQLClauseOperation { select: SelectClauseOperation | null; where: Array; join: Array; groupBy: GroupByClauseOperations; having: Array; orderBy: Array; limit: number | null; offset: number | null; } export declare type Parameterized = T extends Builtin ? string | null : T extends Record ? { [K in keyof T]: Parameterized; } : T; export interface IDataQueryBuilder { readonly statement: string; readonly operations: SQLClauseOperation; readonly dataSource: DataSource; readonly identifier: string; select(...columns: Array): IDataQueryBuilder; distinct(...columns: Array): IDataQueryBuilder; column(...columns: Array): IDataQueryBuilder; first(...columns: Array): IDataQueryBuilder; count(column: AliasColumn | string): IDataQueryBuilder; min(column: AliasColumn | string): IDataQueryBuilder; max(column: AliasColumn | string): IDataQueryBuilder; sum(column: AliasColumn | string): IDataQueryBuilder; avg(column: AliasColumn | string): IDataQueryBuilder; innerJoin(builder: AliasDataQueryBuilder, joinCallback: JoinClauseCallback): IDataQueryBuilder; leftJoin(builder: AliasDataQueryBuilder, joinCallback: JoinClauseCallback): IDataQueryBuilder; rightJoin(builder: AliasDataQueryBuilder, joinCallback: JoinClauseCallback): IDataQueryBuilder; fullJoin(builder: AliasDataQueryBuilder, joinCallback: JoinClauseCallback): IDataQueryBuilder; where(column: string, operator: string, value: string | number | boolean | IDataQueryBuilder): IDataQueryBuilder; whereNot(column: string, operator: string, value: string | number | boolean | IDataQueryBuilder): IDataQueryBuilder; whereWrapped(builderCallback: BuilderClauseCallback): IDataQueryBuilder; whereNotWrapped(builderCallback: BuilderClauseCallback): IDataQueryBuilder; whereBetween(column: string, min: number, max: number): IDataQueryBuilder; whereNotBetween(column: string, min: number, max: number): IDataQueryBuilder; whereIn(column: string, values: string[] | number[] | IDataQueryBuilder): IDataQueryBuilder; whereNotIn(column: string, values: string[] | number[] | IDataQueryBuilder): IDataQueryBuilder; whereNull(column: string): IDataQueryBuilder; whereNotNull(column: string): IDataQueryBuilder; whereLike(column: string, searchValue: string): IDataQueryBuilder; whereExists(subQueryBuilder: AliasDataQueryBuilder): IDataQueryBuilder; whereNotExists(subQueryBuilder: AliasDataQueryBuilder): IDataQueryBuilder; andWhere(column: string, operator: string, value: string | number | boolean | IDataQueryBuilder): IDataQueryBuilder; andWhereNot(column: string, operator: string, value: string | number | boolean | IDataQueryBuilder): IDataQueryBuilder; andWhereWrapped(builderCallback: BuilderClauseCallback): IDataQueryBuilder; andWhereNotWrapped(builderCallback: BuilderClauseCallback): IDataQueryBuilder; andWhereBetween(column: string, min: number, max: number): IDataQueryBuilder; andWhereNotBetween(column: string, min: number, max: number): IDataQueryBuilder; andWhereIn(column: string, values: string[] | number[] | IDataQueryBuilder): IDataQueryBuilder; andWhereNotIn(column: string, values: string[] | number[] | IDataQueryBuilder): IDataQueryBuilder; andWhereNull(column: string): IDataQueryBuilder; andWhereNotNull(column: string): IDataQueryBuilder; andWhereLike(column: string, searchValue: string): IDataQueryBuilder; andWhereExists(subQueryBuilder: AliasDataQueryBuilder): IDataQueryBuilder; andWhereNotExists(subQueryBuilder: AliasDataQueryBuilder): IDataQueryBuilder; orWhere(column: string, operator: string, value: string | number | boolean | IDataQueryBuilder): IDataQueryBuilder; orWhereNot(column: string, operator: string, value: string | number | boolean | IDataQueryBuilder): IDataQueryBuilder; orWhereWrapped(builderCallback: BuilderClauseCallback): IDataQueryBuilder; orWhereNotWrapped(builderCallback: BuilderClauseCallback): IDataQueryBuilder; orWhereBetween(column: string, min: number, max: number): IDataQueryBuilder; orWhereNotBetween(column: string, min: number, max: number): IDataQueryBuilder; orWhereIn(column: string, values: string[] | number[] | IDataQueryBuilder): IDataQueryBuilder; orWhereNotIn(column: string, values: string[] | number[] | IDataQueryBuilder): IDataQueryBuilder; orWhereNull(column: string): IDataQueryBuilder; orWhereNotNull(column: string): IDataQueryBuilder; orWhereLike(column: string, searchValue: string): IDataQueryBuilder; orWhereExists(subQueryBuilder: AliasDataQueryBuilder): IDataQueryBuilder; orWhereNotExists(subQueryBuilder: AliasDataQueryBuilder): IDataQueryBuilder; groupBy(...columns: string[]): IDataQueryBuilder; having(column: SelectedColumn | string, operator: string, value: string | number | boolean | IDataQueryBuilder): IDataQueryBuilder; havingIn(column: SelectedColumn | string, values: number[] | string[]): IDataQueryBuilder; havingNotIn(column: SelectedColumn | string, values: number[] | string[]): IDataQueryBuilder; havingBetween(column: SelectedColumn | string, min: number, max: number): IDataQueryBuilder; havingNotBetween(column: SelectedColumn | string, min: number, max: number): IDataQueryBuilder; havingNull(column: string): IDataQueryBuilder; havingNotNull(column: string): IDataQueryBuilder; havingExists(subQueryBuilder: AliasDataQueryBuilder): IDataQueryBuilder; havingNotExists(subQueryBuilder: AliasDataQueryBuilder): IDataQueryBuilder; andHaving(column: SelectedColumn | string, operator: string, value: string | number | boolean | IDataQueryBuilder): IDataQueryBuilder; andHavingIn(column: SelectedColumn | string, values: number[] | string[]): IDataQueryBuilder; andHavingNotIn(column: SelectedColumn | string, values: number[] | string[]): IDataQueryBuilder; andHavingBetween(column: SelectedColumn | string, min: number, max: number): IDataQueryBuilder; andHavingNotBetween(column: SelectedColumn | string, min: number, max: number): IDataQueryBuilder; andHavingNull(column: string): IDataQueryBuilder; andHavingNotNull(column: string): IDataQueryBuilder; andHavingExists(subQueryBuilder: AliasDataQueryBuilder): IDataQueryBuilder; andHavingNotExists(subQueryBuilder: AliasDataQueryBuilder): IDataQueryBuilder; orHaving(column: SelectedColumn | string, operator: string, value: string | number | boolean | IDataQueryBuilder): IDataQueryBuilder; orHavingIn(column: SelectedColumn | string, values: number[] | string[]): IDataQueryBuilder; orHavingNotIn(column: SelectedColumn | string, values: number[] | string[]): IDataQueryBuilder; orHavingBetween(column: SelectedColumn | string, min: number, max: number): IDataQueryBuilder; orHavingNotBetween(column: SelectedColumn | string, min: number, max: number): IDataQueryBuilder; orHavingNull(column: string): IDataQueryBuilder; orHavingNotNull(column: string): IDataQueryBuilder; orHavingExists(subQueryBuilder: AliasDataQueryBuilder): IDataQueryBuilder; orHavingNotExists(subQueryBuilder: AliasDataQueryBuilder): IDataQueryBuilder; orderBy(column: string, direction: Direction): IDataQueryBuilder; limit(size: number): IDataQueryBuilder; offset(move: number): IDataQueryBuilder; take(size: number, move: number): IDataQueryBuilder; paginate(pagination: Pagination): void; setHeaders(headers: IncomingHttpHeaders): void; value(): Promise; clone(): IDataQueryBuilder; parameterizeOperations(): Promise>>; } export declare class DataQueryBuilder implements IDataQueryBuilder { readonly statement: string; readonly operations: SQLClauseOperation; readonly dataSource: DataSource; pagination?: Pagination; readonly identifier: string; private profileName; private parameterizer; private headers; constructor({ statement, operations, parameterizer, dataSource, profileName, headers, }: { statement: string; operations?: SQLClauseOperation; parameterizer: IParameterizer; dataSource: DataSource; profileName: string; headers: IncomingHttpHeaders; }); select(...columns: Array): this; distinct(...columns: Array): this; column(...columns: Array): this; first(...columns: Array): this; count(column?: AliasColumn | string): this; min(column: AliasColumn | string): this; max(column: AliasColumn | string): this; avg(column: AliasColumn | string): this; sum(column: AliasColumn | string): this; innerJoin(builder: AliasDataQueryBuilder, joinCallback: JoinClauseCallback): this; leftJoin(builder: AliasDataQueryBuilder, joinCallback: JoinClauseCallback): this; rightJoin(builder: AliasDataQueryBuilder, joinCallback: JoinClauseCallback): this; fullJoin(builder: AliasDataQueryBuilder, joinCallback: JoinClauseCallback): this; where(column: string, operator: string, value: string | number | boolean | IDataQueryBuilder): this; whereNot(column: string, operator: string, value: string | number | boolean | IDataQueryBuilder): this; whereWrapped(builderCallback: BuilderClauseCallback): this; whereNotWrapped(builderCallback: BuilderClauseCallback): this; whereBetween(column: string, min: number, max: number): this; whereNotBetween(column: string, min: number, max: number): this; whereIn(column: string, values: string[] | number[] | IDataQueryBuilder): this; whereNotIn(column: string, values: string[] | number[] | IDataQueryBuilder): this; whereNull(column: string): this; whereNotNull(column: string): this; whereLike(column: string, searchValue: string): this; whereExists(subQueryBuilder: AliasDataQueryBuilder): this; whereNotExists(subQueryBuilder: AliasDataQueryBuilder): this; andWhere(column: string, operator: string, value: string | number | boolean | IDataQueryBuilder): this; andWhereNot(column: string, operator: string, value: string | number | boolean | IDataQueryBuilder): this; andWhereWrapped(builderCallback: BuilderClauseCallback): this; andWhereNotWrapped(builderCallback: BuilderClauseCallback): this; andWhereBetween(column: string, min: number, max: number): this; andWhereNotBetween(column: string, min: number, max: number): this; andWhereIn(column: string, values: string[] | number[] | IDataQueryBuilder): this; andWhereNotIn(column: string, values: string[] | number[] | IDataQueryBuilder): this; andWhereNull(column: string): this; andWhereNotNull(column: string): this; andWhereLike(column: string, searchValue: string): this; andWhereExists(subQueryBuilder: AliasDataQueryBuilder): this; andWhereNotExists(subQueryBuilder: AliasDataQueryBuilder): this; orWhere(column: string, operator: string, value: string | number | boolean | IDataQueryBuilder): this; orWhereNot(column: string, operator: string, value: string | number | boolean | IDataQueryBuilder): this; orWhereWrapped(builderCallback: BuilderClauseCallback): this; orWhereNotWrapped(builderCallback: BuilderClauseCallback): this; orWhereBetween(column: string, min: number, max: number): this; orWhereNotBetween(column: string, min: number, max: number): this; orWhereIn(column: string, values: string[] | number[] | IDataQueryBuilder): this; orWhereNotIn(column: string, values: string[] | number[] | IDataQueryBuilder): this; orWhereNull(column: string): this; orWhereNotNull(column: string): this; orWhereLike(column: string, searchValue: string): this; orWhereExists(subQueryBuilder: AliasDataQueryBuilder): this; orWhereNotExists(subQueryBuilder: AliasDataQueryBuilder): this; groupBy(...columns: string[]): this; having(column: SelectedColumn | string, operator: string, value: string | number | boolean | IDataQueryBuilder): this; havingIn(column: SelectedColumn | string, values: number[] | string[]): this; havingNotIn(column: SelectedColumn | string, values: number[] | string[]): this; havingBetween(column: SelectedColumn | string, min: number, max: number): this; havingNotBetween(column: SelectedColumn | string, min: number, max: number): this; havingNull(column: string): this; havingNotNull(column: string): this; havingExists(subQueryBuilder: AliasDataQueryBuilder): this; havingNotExists(subQueryBuilder: AliasDataQueryBuilder): this; andHaving(column: SelectedColumn | string, operator: string, value: string | number | boolean | IDataQueryBuilder): this; andHavingIn(column: SelectedColumn | string, values: number[] | string[]): this; andHavingNotIn(column: SelectedColumn | string, values: number[] | string[]): this; andHavingBetween(column: SelectedColumn | string, min: number, max: number): this; andHavingNotBetween(column: SelectedColumn | string, min: number, max: number): this; andHavingNull(column: string): this; andHavingNotNull(column: string): this; andHavingExists(subQueryBuilder: AliasDataQueryBuilder): this; andHavingNotExists(subQueryBuilder: AliasDataQueryBuilder): this; orHaving(column: SelectedColumn | string, operator: string, value: string | number | boolean | IDataQueryBuilder): this; orHavingIn(column: SelectedColumn | string, values: number[] | string[]): this; orHavingNotIn(column: SelectedColumn | string, values: number[] | string[]): this; orHavingBetween(column: SelectedColumn | string, min: number, max: number): this; orHavingNotBetween(column: SelectedColumn | string, min: number, max: number): this; orHavingNull(column: string): this; orHavingNotNull(column: string): this; orHavingExists(subQueryBuilder: AliasDataQueryBuilder): this; orHavingNotExists(subQueryBuilder: AliasDataQueryBuilder): this; orderBy(column: string, direction?: Direction): this; limit(size: number): this; offset(move: number): this; take(size: number, move: number): this; clone(): DataQueryBuilder; paginate(pagination: Pagination): void; setHeaders(headers: IncomingHttpHeaders): void; parameterizeOperations(): Promise>>; value(): Promise; private recordSelect; private recordJoin; private recordWhere; private recordHaving; private parameterizeValue; }