@orbit/record-cache
Version:
Orbit base classes used to access and maintain a set of records.
69 lines (68 loc) • 6.77 kB
TypeScript
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>;
}