database-builder
Version:
Library to assist in creating and maintaining SQL commands.
105 lines (104 loc) • 5 kB
TypeScript
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;
}