import { Observable } from 'rxjs'; import { PeriodFunctions } from './annotations'; import { DataSource } from './data-source'; import { CalculatedProperty, EntityType, IDimensionMember, Indicator, Property, QueryReturn } from './models'; import { Annotation, AnnotationTerm, Dimension, QueryOptions } from './types'; /** * CURD service for entity */ export interface EntityService { __id__?: string; dataSource: DataSource; entitySet: string; /** * Get EntityType */ selectEntityType(): Observable; /** * @deprecated use `selectQuery` * Query * @param options */ query(options?: QueryOptions): Observable>; selectQuery(options?: QueryOptions): Observable>; /** * Refresh */ refresh(): void; /** * Get the specified annotation of the current entity * * @param term Type of annotation * @param qualifier Annotation identifier, optional */ getAnnotation(term: AnnotationTerm, qualifier?: string): Observable; /** * @deprecated use selectMembers * * Get all members of a field dimension */ getMembers(property: Dimension): Observable>; selectMembers(property: Dimension): Observable>; /** * Register a provisional indicator definition to measure * * @param name Measure name * @param property Indicator definition */ registerMeasure(name: string, property: CalculatedProperty): void; /** * Get calculated measure member generated by common functions * * @param measure The name of indicator-based measure * @param type Time period function for indicator * @param calendar Calendar hierarchy name */ getCalculatedMember(measure: string, type: PeriodFunctions, calendar?: string): Property; /** * @deprecated use getIndicator in DataSource ? * * @param id */ getIndicator(idOrCode: string): Indicator; selectIndicator(idOrCode: string): Observable; /** * Completes all relevant Observable streams. */ onDestroy(): void; }