UNPKG

@sap-cloud-sdk/odata-common

Version:

SAP Cloud SDK for JavaScript common functions of OData client generator and OpenAPI clint generator.

57 lines (56 loc) 3.38 kB
import { UnaryFilter } from './unary-filter'; import { FilterList } from './filter-list'; import type { EntityBase } from '../entity-base'; import type { OneToManyLink } from '../selectable'; import type { DeSerializers } from '../de-serializers'; import type { EntityApi } from '../entity-api'; import type { BooleanFilterFunction } from './boolean-filter-function'; import type { Filter } from './filter'; import type { FilterLambdaExpression } from './filter-lambda-expression'; import type { FilterLink } from './filter-link'; /** * A union of all types that can be used for filtering. * @typeParam EntityT - Type of the entity to be filtered on. */ export type Filterable<EntityT extends EntityBase, DeSerializersT extends DeSerializers, LinkedEntityApiT extends EntityApi<EntityBase, DeSerializersT> = EntityApi<EntityBase, any>> = Filter<EntityT, DeSerializersT, any> | FilterLink<EntityT, DeSerializersT, LinkedEntityApiT> | FilterList<EntityT, DeSerializersT> | FilterLambdaExpression<EntityT, DeSerializersT> | UnaryFilter<EntityT, DeSerializersT> | BooleanFilterFunction<EntityT> | OneToManyLink<EntityT, DeSerializersT, LinkedEntityApiT>; /** * Combine {@link Filterable}s with logical `and` to create a {@link FilterList}. * @example * ```ts * Entity.requestBuilder() * .getAll() * .filter(and(filterExp1, filterExp2)); * ``` * * Note that the {@link @sap-cloud-sdk/odata-v2!GetAllRequestBuilder.filter | GetAllRequestBuilderV2.filter} and {@link @sap-cloud-sdk/odata-v4!GetAllRequestBuilder.filter | GetAllRequestBuilderV4.filter} method take a rest parameter and thereby an array of filter expressions that are then combined conjunctively. As a consequence following is equivalent to the example above: * ```ts * Entity.requestBuilder() * .getAll() * .filter(filterExp1, filterExp2); * ``` * @typeParam EntityT - Type of the entity filter on. * @param expressions - Filterables to be combined with logical `and`. * @returns The newly created FilterList. */ export declare function and<EntityT extends EntityBase, DeSerializersT extends DeSerializers>(expressions: Filterable<EntityT, DeSerializersT>[]): FilterList<EntityT, DeSerializersT>; export declare function and<EntityT extends EntityBase, DeSerializersT extends DeSerializers>(...expressions: Filterable<EntityT, DeSerializersT>[]): FilterList<EntityT, DeSerializersT>; /** * Combine {@link Filterable}s with logical `or` to create a {@link FilterList}. * @example * ```ts * Entity.requestBuilder() * .getAll() * .filter(or(filterExp1, filterExp2)); * ``` * @typeParam EntityT - Type of the entity filter on. * @param expressions - Filterables to be combined with logical `or`. * @returns The newly created FilterList. */ export declare function or<EntityT extends EntityBase, DeSerializersT extends DeSerializers>(expressions: Filterable<EntityT, DeSerializersT>[]): FilterList<EntityT, DeSerializersT>; export declare function or<EntityT extends EntityBase, DeSerializersT extends DeSerializers>(...expressions: Filterable<EntityT, DeSerializersT>[]): FilterList<EntityT, DeSerializersT>; /** * Negate a filter. * @param filter - The filter to negate. * @returns The negated filter. */ export declare function not<EntityT extends EntityBase, DeSerializersT extends DeSerializers>(filter: Filterable<EntityT, DeSerializersT>): UnaryFilter<EntityT, DeSerializersT>;