import { ConditionGroup, IConditionsMap } from './condition'; import { Table } from './mapping'; import { ConditionBuilder, FieldSelector } from './types'; /** * Implements methods for defining a selection criteria * * @export * @class Criteria * @template TTable */ export declare class Criteria { protected $table: TTable; protected conditions: ConditionGroup; constructor(table: TTable); where(condition: ConditionBuilder): Criteria; where(field: string | FieldSelector, value: number | number[] | string | string[]): Criteria; where(field: string | FieldSelector, operator: string, value: any): Criteria; /** * Adds a group of conditions connect by an `OR` operator * * @param {IConditionsMap} condition * @returns {Criteria} * * @memberOf Criteria */ whereAny(condition: IConditionsMap): Criteria; /** * Adds a group of conditions connect by an `OR` operator * * @param {Array>} condition * @returns {Criteria} * * @memberOf Criteria */ whereAny(condition: Array>): Criteria; /** * Adds a group of conditions connect by an `OR` operator * * @param {IFieldMapper} condition * @param {...IFieldMapper[]} conditions * @returns {Criteria} * * @memberOf Criteria */ whereAny(condition: ConditionBuilder, ...conditions: ConditionBuilder[]): Criteria; /** * Adds a group of conditions connect by an `AND` operator * * @param {IConditionsMap} condition * @returns {Criteria} * * @memberOf Criteria */ whereAll(condition: IConditionsMap): Criteria; /** * Adds a group of conditions connect by an `AND` operator * * @param {Array>} condition * @returns {Criteria} * * @memberOf Criteria */ whereAll(condition: Array>): Criteria; /** * Adds a group of conditions connect by an `AND` operator * * @param {IFieldMapper} condition * @param {...IFieldMapper[]} conditions * @returns {Criteria} * * @memberOf Criteria */ whereAll(condition: ConditionBuilder, ...conditions: ConditionBuilder[]): Criteria; private convertToConditionsArray(field, operatorOrValue?, value?); } /** * Use this class to add criteria functionality in classes that provide chain methods. * * The CriteriaEnabled class uses generics to specify the return type of Criteria methods as * an instance of your subclass. This way, other methods in your class can be chained. * * @export * @abstract * @class CriteriaEnabled * @extends {Criteria} * @template TTable * @template TSubclass */ export declare abstract class CriteriaEnabled> extends Criteria { constructor(table: TTable); where(condition: ConditionBuilder): TSubclass; where(field: string | FieldSelector, value: number | number[] | string | string[]): TSubclass; where(field: string | FieldSelector, operator: string, value: any): TSubclass; /** * Adds a group of conditions connect by an `OR` operator * * @param {IConditionsMap|Array>} condition * @returns {Criteria} * * @memberOf Criteria */ whereAny(condition: IConditionsMap | Array>): TSubclass; /** * Adds a group of conditions connect by an `OR` operator * * @param {IFieldMapper} condition * @param {...IFieldMapper[]} conditions * @returns {Criteria} * * @memberOf Criteria */ whereAny(condition: ConditionBuilder, ...conditions: ConditionBuilder[]): TSubclass; /** * Adds a group of conditions connect by an `AND` operator * * @param {IConditionsMap|Array>} condition * @returns {Criteria} * * @memberOf Criteria */ whereAll(condition: IConditionsMap | Array>): TSubclass; /** * Adds a group of conditions connect by an `AND` operator * * @param {IFieldMapper} condition * @param {...IFieldMapper[]} conditions * @returns {Criteria} * * @memberOf Criteria */ whereAll(condition: ConditionBuilder, ...conditions: ConditionBuilder[]): TSubclass; }