UNPKG

@sap-cloud-sdk/odata-common

Version:

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

43 lines (42 loc) 2.33 kB
import type { DeSerializers } from '../de-serializers'; import type { EntityBase, EntityIdentifiable } from '../entity-base'; import type { Link } from '../selectable'; import type { EntityApi, EntityType } from '../entity-api'; import type { Filterable } from './filterable'; /** * Data structure to represent filter on properties of a navigation property (link). * In OData v2 filtering for navigation properties is ONLY supported for properties with a one-to-one cardinality ({@link OneToOneLink}). * @example * In the following filter statement `Entity.requestBuilder().filter(Entity.to_NavProperty.filter(LinkedEntity.property.equals(value)))`, * `Entity.to_NavProperty.filter(LinkedEntity.property.equals(value))` is a `FilterLink`. * * In OData v4 filtering is also possible on one-to-many links. See {@link OneToManyLink}. * @typeParam EntityT - Type of the entity to be filtered. * @typeParam LinkedEntityT - Type of the linked entity which is used in the filter. */ export declare class FilterLink<EntityT extends EntityBase, DeSerializersT extends DeSerializers, LinkedEntityApiT extends EntityApi<EntityBase, DeSerializersT>> implements EntityIdentifiable<EntityT, DeSerializersT> { link: Link<EntityT, DeSerializersT, LinkedEntityApiT>; filters: Filterable<EntityType<LinkedEntityApiT>, DeSerializersT>[]; /** * Entity type of the entity tp be filtered. */ readonly _entity: EntityT; readonly _deSerializers: DeSerializersT; /** * Linked entity to be filtered by. */ readonly _linkedEntityType: EntityType<LinkedEntityApiT>; /** * Creates an instance of `FilterLink`. * @param link - Linked entity to be used in the filter. * @param filters - List of filterables for the linked entity. */ constructor(link: Link<EntityT, DeSerializersT, LinkedEntityApiT>, filters: Filterable<EntityType<LinkedEntityApiT>, DeSerializersT>[]); } /** * Type guard for the FilterLink. * @param filterable - Object to be checked. * @returns boolean * @internal */ export declare function isFilterLink<EntityT extends EntityBase, DeSerializersT extends DeSerializers, LinkedEntityApiT extends EntityApi<EntityBase, DeSerializersT>>(filterable: Filterable<EntityT, DeSerializersT>): filterable is FilterLink<EntityT, DeSerializersT, LinkedEntityApiT>;