UNPKG

database-builder

Version:

Library to assist in creating and maintaining SQL commands.

105 lines (104 loc) 5 kB
import { LambdaExpression } from "lambda-expression"; import { ExpressionOrColumn, ExpressionProjection, ParamType, ValueTypeToParse, ExpressionQuery } from "../core/utils"; import { WhereCompiled } from "./where-compiled"; import { Condition } from "./enums/condition"; import { WhereBaseBuilderContract } from "./where-base-builder-contract"; import { ColumnParams } from "../core/column-params"; import { ColumnRef } from "../core/column-ref"; import { ProjectionsHelper } from "../core/projections-helper"; import { SqlCompilable } from "./sql-compilable"; export declare abstract class WhereBaseBuilder<T, TExpression, TWhere extends WhereBaseBuilder<T, TExpression, TWhere>> implements WhereBaseBuilderContract<T, TExpression, TWhere> { private _typeT; private _alias; private static readonly AND; private static readonly OR; private _where; private _params; private _pendingConditions; private _pendingAndOr; private readonly _databaseHelper; constructor(_typeT: new () => T, _alias: string); proj(): ProjectionsHelper<T>; concat(...projections: Array<ExpressionProjection<any, T>>): ProjectionsHelper<T>; coalesce<TExpressionReturn>(expression: ExpressionQuery<TExpressionReturn, T>, argumentsCoalesce: any[], alias?: string, args?: any[]): ProjectionsHelper<T>; ref<TExpressionReturn>(expression: ExpressionOrColumn<TExpressionReturn, T>, alias?: string): ColumnRef; not(): TWhere; and(): TWhere; or(): TWhere; scope(scopeCallback: (scope: TWhere) => void): TWhere; /** * @deprecated Use `equal` * @param expression * @param column */ equalColumn(expression: TExpression, column: string): TWhere; /** * @deprecated use `equal` */ equalValue(expression: TExpression, value: ValueTypeToParse): TWhere; equal(expression1: TExpression, expression2: TExpression): TWhere; /** * @deprecated use `like` */ likeValue(expression: TExpression, value: string): TWhere; like(expression1: TExpression, expression2: TExpression): TWhere; multiColumnLike(like: string, separator: string, ...columns: TExpression[]): TWhere; contains(expression: TExpression, value: string): TWhere; startsWith(expression: TExpression, value: string): TWhere; endsWith(expression: TExpression, value: string): TWhere; isNull(expression1: TExpression): TWhere; /** * @deprecated use `great` */ greatValue(expression: TExpression, value: ValueTypeToParse): TWhere; great(expression1: TExpression, expression2: TExpression): TWhere; /** * @deprecated use `greatAndEqual` */ greatAndEqualValue(expression: TExpression, value: ValueTypeToParse): TWhere; greatAndEqual(expression1: TExpression, expression2: TExpression): TWhere; /** * @deprecated use `less` */ lessValue(expression: TExpression, value: ValueTypeToParse): TWhere; less(expression1: TExpression, expression2: TExpression): TWhere; /** * @deprecated use `lessAndEqual` */ lessAndEqualValue(expression: TExpression, value: ValueTypeToParse): TWhere; lessAndEqual(expression1: TExpression, expression2: TExpression): TWhere; /** * @deprecated use `between` */ betweenValue(expression: TExpression, value1: ValueTypeToParse, value2: ValueTypeToParse): TWhere; between(expression: TExpression, startExpression: TExpression, endExpression: TExpression): TWhere; /** * @deprecated use `in` */ inValues(expression: TExpression, values: ValueTypeToParse[]): TWhere; in(expression: TExpression, valuesOrQuery: ValueTypeToParse[] | SqlCompilable): TWhere; /** * @deprecated use `in` */ inSelect(expression: TExpression, query: SqlCompilable): TWhere; compile(): WhereCompiled; expression(expression: LambdaExpression<T>): TWhere; _addParams(params: ParamType[]): TWhere; protected abstract _getInstance(): TWhere; protected abstract _create(typeT: new () => T, alias: string): TWhere; protected abstract getColumnParams(expression: TExpression): ColumnParams; protected buildWhereWithExpressionOrValue(condition: Condition[], expression1: TExpression, expression2: TExpression): void; protected buildWhereColumn(condition: Condition[], ...valuesOrColumns: Array<ColumnParams | string | ValueTypeToParse[]>): void; protected buildWhereParams(condition: Condition[], columns: string[], params: ValueTypeToParse[]): void; protected buildWhere(conditions: Condition[], columns: string[]): void; protected addParam(param: ValueTypeToParse | ValueTypeToParse[]): void; private processParam; private buildWhereMetadata; private addValueParam; private createWhere; private conditionIsNull; private buildConditions; private builderConditions; private checkWhere; private compileScope; }