@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
TypeScript
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>;