@sap-cloud-sdk/odata-common
Version:
SAP Cloud SDK for JavaScript common functions of OData client generator and OpenAPI clint generator.
46 lines (45 loc) • 2.95 kB
TypeScript
import { Link } from '../selectable/link';
import { Order } from './order';
import type { DeSerializers } from '../de-serializers';
import type { EntityBase } from '../entity-base';
import type { ComplexTypePropertyFields, SimpleTypeFields } from '../selectable';
import type { EntityApi } from '../entity-api';
import type { OrderLink } from './order-link';
/**
* A union of all types that can be used for ordering.
* @typeParam EntityT - Type of the entity to be ordered
*/
export type Orderable<EntityT extends EntityBase, LinkedEntityApiT extends EntityApi<EntityBase> = EntityApi<EntityBase>> = Order<EntityT> | OrderLink<EntityT, LinkedEntityApiT>;
/**
* A union of all types that can be used as input for ordering.
* @typeParam EntityT - Type of the entity to be ordered
*/
export type OrderableInput<EntityT extends EntityBase, DeSerializersT extends DeSerializers, LinkedEntityApiT extends EntityApi<EntityBase, DeSerializersT>> = SimpleTypeFields<EntityT> | Link<EntityT, DeSerializersT, LinkedEntityApiT> | ComplexTypePropertyFields<EntityT>;
/**
* A union of Orderable and OrderableInput.
* @typeParam EntityT - Type of the entity to be ordered
*/
export type OrderableAndOrderableInput<EntityT extends EntityBase, DeSerializersT extends DeSerializers, LinkedEntityApiT extends EntityApi<EntityBase, DeSerializersT>, LinkedEntityApiTOptional extends EntityApi<EntityBase> = EntityApi<EntityBase>> = Orderable<EntityT, LinkedEntityApiTOptional> | OrderableInput<EntityT, DeSerializersT, LinkedEntityApiT>;
/**
* @internal
* Convenience function to check whether a given type is of type {@link Orderable}.
* @typeParam EntityT - Type of the entity to be ordered
* @typeParam DeSerializersT - Type of the (de-)serializers
* @param orderType - Type {@link Orderable} or {@link OrderableInput}.
* @returns Whether the given `orderType` is of type {@link Orderable}.
*/
export declare function isOrderable<EntityT extends EntityBase, DeSerializersT extends DeSerializers>(orderType: Orderable<EntityT> | OrderableInput<EntityT, DeSerializersT, EntityApi<EntityBase, DeSerializersT>>): orderType is Orderable<EntityT>;
/**
* Create new Order by `orderBy._fieldName` in ascending order.
* @typeParam EntityT - Type of the entity to be ordered
* @param orderBy - Field or link to be ordered by.
* @returns New order.
*/
export declare function asc<EntityT extends EntityBase, DeSerializersT extends DeSerializers>(orderBy: OrderableInput<EntityT, DeSerializersT, EntityApi<EntityBase, DeSerializersT>>): Order<EntityT>;
/**
* Create new Order by `orderBy._fieldName` in descending order.
* @typeParam EntityT - Type of the entity to be ordered
* @param orderBy - Field or link to be ordered by.
* @returns New order.
*/
export declare function desc<EntityT extends EntityBase, DeSerializersT extends DeSerializers>(orderBy: OrderableInput<EntityT, DeSerializersT, EntityApi<EntityBase, DeSerializersT>>): Order<EntityT>;