@equantic/linq
Version:
eQuantic Linq for JavaScript
78 lines (77 loc) • 4.84 kB
TypeScript
import type { FieldPath, FieldPathValue } from '../base.js';
import { FilterOperator, IFiltering } from './base.js';
/**
* Represents a single filtering condition for a specific column/property.
* Provides type-safe filtering with strongly-typed column paths and values.
*
* @template TData - The type of data being filtered
* @template TColumn - The specific column/field path being filtered
*/
export declare class Filtering<TData extends object = any, TColumn extends FieldPath<TData> = FieldPath<TData>> implements IFiltering<TData, TColumn> {
/** The column or field path being filtered */
column: TColumn;
/** The filter operator to apply */
operator: FilterOperator;
/** The value to filter by, typed according to the column type */
value: FieldPathValue<TData, TColumn>;
/** Creates an empty filtering instance */
constructor();
/**
* Creates a new filtering instance with the specified column, value, and operator.
* @param column - The column or field path to filter
* @param value - The value to filter by
* @param operator - The filter operator to use (defaults to 'eq')
*/
constructor(column: TColumn, value: FieldPathValue<TData, TColumn>, operator?: FilterOperator);
/**
* Converts the filtering instance to its string representation.
* @returns A string representation in the format 'column:operator(value)'
*/
toString(): string;
/**
* Creates a new filtering instance with equality operator.
* @template TData - The type of data being filtered
* @template TColumn - The specific column/field path being filtered
* @param column - The column or field path to filter
* @param value - The value to test for equality
* @returns A new filtering instance with equality operation
*/
static eq<TData extends object, TColumn extends FieldPath<TData>>(column: TColumn, value: FieldPathValue<TData, TColumn>): IFiltering<TData, TColumn>;
/**
* Creates a new filtering instance with inequality operator.
* @template TData - The type of data being filtered
* @template TColumn - The specific column/field path being filtered
* @param column - The column or field path to filter
* @param value - The value to test for inequality
* @returns A new filtering instance with inequality operation
*/
static neq<TData extends object, TColumn extends FieldPath<TData>>(column: TColumn, value: FieldPathValue<TData, TColumn>): IFiltering<TData, TColumn>;
static gt<TData extends object, TColumn extends FieldPath<TData>>(column: TColumn, value: FieldPathValue<TData, TColumn> extends number | Date ? FieldPathValue<TData, TColumn> : never): IFiltering<TData, TColumn>;
static lt<TData extends object, TColumn extends FieldPath<TData>>(column: TColumn, value: FieldPathValue<TData, TColumn> extends number | Date ? FieldPathValue<TData, TColumn> : never): IFiltering<TData, TColumn>;
static gte<TData extends object, TColumn extends FieldPath<TData>>(column: TColumn, value: FieldPathValue<TData, TColumn> extends number | Date ? FieldPathValue<TData, TColumn> : never): IFiltering<TData, TColumn>;
static lte<TData extends object, TColumn extends FieldPath<TData>>(column: TColumn, value: FieldPathValue<TData, TColumn> extends number | Date ? FieldPathValue<TData, TColumn> : never): IFiltering<TData, TColumn>;
/**
* Creates a new filtering instance with contains operator (for string properties).
* @template TData - The type of data being filtered
* @template TColumn - The specific column/field path being filtered
* @param column - The column or field path to filter
* @param value - The substring to search for within the property value
* @returns A new filtering instance with contains operation
*/
static ct<TData extends object, TColumn extends FieldPath<TData>>(column: TColumn, value: FieldPathValue<TData, TColumn> extends string ? string : never): IFiltering<TData, TColumn>;
static in<TData extends object, TColumn extends FieldPath<TData>>(column: TColumn, ...value: FieldPathValue<TData, TColumn>[]): IFiltering<TData, TColumn>;
static sw<TData extends object, TColumn extends FieldPath<TData>>(column: TColumn, value: FieldPathValue<TData, TColumn> extends string ? string : never): IFiltering<TData, TColumn>;
static ew<TData extends object, TColumn extends FieldPath<TData>>(column: TColumn, value: FieldPathValue<TData, TColumn> extends string ? string : never): IFiltering<TData, TColumn>;
}
/**
* Alias for Filtering class for more concise usage.
* @example
* ```typescript
* // Using full class name
* const filter1 = Filtering.eq('name', 'John');
*
* // Using alias
* const filter2 = F.eq('name', 'John');
* ```
*/
export declare const F: typeof Filtering;