UNPKG

@orbit/record-cache

Version:

Orbit base classes used to access and maintain a set of records.

69 lines (68 loc) 6.77 kB
import { DefaultRequestOptions, FullRequestOptions, FullResponse, QueryOrExpressions, RequestOptions, TransformOrOperations } from '@orbit/data'; import { AsyncRecordQueryable, AsyncRecordUpdatable, InitializedRecord, RecordIdentity, RecordOperation, RecordOperationResult, RecordOperationTerm, RecordQuery, RecordQueryBuilder, RecordQueryExpression, RecordQueryResult, RecordTransform, RecordTransformBuilder, RecordTransformBuilderFunc, RecordTransformResult } from '@orbit/records'; import { Dict } from '@orbit/utils'; import { AsyncOperationProcessor, AsyncOperationProcessorClass } from './async-operation-processor'; import { AsyncLiveQuery } from './live-query/async-live-query'; import { AsyncInverseTransformOperator } from './operators/async-inverse-transform-operators'; import { AsyncQueryOperator } from './operators/async-query-operators'; import { AsyncTransformOperator } from './operators/async-transform-operators'; import { AsyncRecordAccessor, RecordChangeset, RecordRelationshipIdentity } from './record-accessor'; import { RecordCache, RecordCacheQueryOptions, RecordCacheSettings, RecordCacheTransformOptions } from './record-cache'; import { RecordTransformBuffer } from './record-transform-buffer'; import { PatchResult, RecordCacheUpdateDetails } from './response'; export interface AsyncRecordCacheSettings<QO extends RequestOptions = RecordCacheQueryOptions, TO extends RequestOptions = RecordCacheTransformOptions, QB = RecordQueryBuilder, TB = RecordTransformBuilder> extends RecordCacheSettings<QO, TO, QB, TB> { processors?: AsyncOperationProcessorClass[]; queryOperators?: Dict<AsyncQueryOperator>; transformOperators?: Dict<AsyncTransformOperator>; inverseTransformOperators?: Dict<AsyncInverseTransformOperator>; debounceLiveQueries?: boolean; transformBuffer?: RecordTransformBuffer; } export declare abstract class AsyncRecordCache<QO extends RequestOptions = RecordCacheQueryOptions, TO extends RequestOptions = RecordCacheTransformOptions, QB = RecordQueryBuilder, TB = RecordTransformBuilder, QueryResponseDetails = unknown, TransformResponseDetails extends RecordCacheUpdateDetails = RecordCacheUpdateDetails> extends RecordCache<QO, TO, QB, TB> implements AsyncRecordAccessor, AsyncRecordQueryable<QueryResponseDetails, QB, QO>, AsyncRecordUpdatable<TransformResponseDetails, TB, TO> { protected _processors: AsyncOperationProcessor[]; protected _queryOperators: Dict<AsyncQueryOperator>; protected _transformOperators: Dict<AsyncTransformOperator>; protected _inverseTransformOperators: Dict<AsyncInverseTransformOperator>; protected _debounceLiveQueries: boolean; protected _transformBuffer?: RecordTransformBuffer; constructor(settings: AsyncRecordCacheSettings<QO, TO, QB, TB>); get processors(): AsyncOperationProcessor[]; getQueryOperator(op: string): AsyncQueryOperator; getTransformOperator(op: string): AsyncTransformOperator; getInverseTransformOperator(op: string): AsyncInverseTransformOperator; abstract getRecordAsync(recordIdentity: RecordIdentity): Promise<InitializedRecord | undefined>; abstract getRecordsAsync(typeOrIdentities?: string | RecordIdentity[]): Promise<InitializedRecord[]>; abstract getInverseRelationshipsAsync(recordIdentityOrIdentities: RecordIdentity | RecordIdentity[]): Promise<RecordRelationshipIdentity[]>; abstract setRecordAsync(record: InitializedRecord): Promise<void>; abstract setRecordsAsync(records: InitializedRecord[]): Promise<void>; abstract removeRecordAsync(recordIdentity: RecordIdentity): Promise<InitializedRecord | undefined>; abstract removeRecordsAsync(recordIdentities: RecordIdentity[]): Promise<InitializedRecord[]>; abstract addInverseRelationshipsAsync(relationships: RecordRelationshipIdentity[]): Promise<void>; abstract removeInverseRelationshipsAsync(relationships: RecordRelationshipIdentity[]): Promise<void>; applyRecordChangesetAsync(changeset: RecordChangeset): Promise<void>; getRelatedRecordAsync(identity: RecordIdentity, relationship: string): Promise<RecordIdentity | null | undefined>; getRelatedRecordsAsync(identity: RecordIdentity, relationship: string): Promise<RecordIdentity[] | undefined>; /** * Queries the cache. */ query<RequestData extends RecordQueryResult = RecordQueryResult>(queryOrExpressions: QueryOrExpressions<RecordQueryExpression, QB>, options?: DefaultRequestOptions<QO>, id?: string): Promise<RequestData>; query<RequestData extends RecordQueryResult = RecordQueryResult>(queryOrExpressions: QueryOrExpressions<RecordQueryExpression, QB>, options: FullRequestOptions<QO>, id?: string): Promise<FullResponse<RequestData, QueryResponseDetails, RecordOperation>>; /** * Updates the cache. */ update<RequestData extends RecordTransformResult = RecordTransformResult>(transformOrOperations: TransformOrOperations<RecordOperation, TB>, options?: DefaultRequestOptions<TO>, id?: string): Promise<RequestData>; update<RequestData extends RecordTransformResult = RecordTransformResult>(transformOrOperations: TransformOrOperations<RecordOperation, TB>, options: FullRequestOptions<TO>, id?: string): Promise<FullResponse<RequestData, TransformResponseDetails, RecordOperation>>; /** * Patches the cache with an operation or operations. * * @deprecated since v0.17 */ patch(operationOrOperations: RecordOperation | RecordOperation[] | RecordOperationTerm | RecordOperationTerm[] | RecordTransformBuilderFunc): Promise<PatchResult>; liveQuery(queryOrExpressions: QueryOrExpressions<RecordQueryExpression, QB>, options?: DefaultRequestOptions<QO>, id?: string): AsyncLiveQuery<QO, TO, QB, TB>; protected _query<RequestData extends RecordQueryResult = RecordQueryResult>(query: RecordQuery, options?: QO): Promise<FullResponse<RequestData, QueryResponseDetails, RecordOperation>>; protected _update<RequestData extends RecordTransformResult = RecordTransformResult>(transform: RecordTransform, options?: TO): Promise<FullResponse<RequestData, TransformResponseDetails, RecordOperation>>; protected _getTransformBuffer(): RecordTransformBuffer; protected _initTransformBuffer(transform: RecordTransform): Promise<RecordTransformBuffer>; protected _applyTransformOperations(transform: RecordTransform, ops: RecordOperation[] | RecordOperationTerm[], response: FullResponse<RecordOperationResult[], RecordCacheUpdateDetails, RecordOperation>, primary?: boolean): Promise<void>; protected _applyTransformOperation(transform: RecordTransform, operation: RecordOperation | RecordOperationTerm, response: FullResponse<RecordOperationResult[], RecordCacheUpdateDetails, RecordOperation>, primary?: boolean): Promise<void>; }