@orbit/jsonapi
Version:
JSON:API support for Orbit.
39 lines (38 loc) • 1.79 kB
TypeScript
import { Dict } from '@orbit/utils';
import { RecordQuery, RecordIdentity, RecordQueryExpression, RecordOperation, RecordQueryExpressionResult } from '@orbit/records';
import { FullResponse } from '@orbit/data';
import { JSONAPIRequestProcessor } from '../jsonapi-request-processor';
import { JSONAPIRequestOptions } from './jsonapi-request-options';
import { JSONAPIResponse } from '../jsonapi-response';
export interface QueryRequest {
op: string;
options?: JSONAPIRequestOptions;
}
export interface FindRecordRequest extends QueryRequest {
op: 'findRecord';
record: RecordIdentity;
}
export interface FindRecordsRequest extends QueryRequest {
op: 'findRecords';
type: string;
}
export interface FindRelatedRecordRequest extends QueryRequest {
op: 'findRelatedRecord';
record: RecordIdentity;
relationship: string;
}
export interface FindRelatedRecordsRequest extends QueryRequest {
op: 'findRelatedRecords';
record: RecordIdentity;
relationship: string;
}
export declare type RecordQueryRequest = FindRecordRequest | FindRecordsRequest | FindRelatedRecordRequest | FindRelatedRecordsRequest;
export declare type QueryRequestProcessorResponse = FullResponse<RecordQueryExpressionResult, JSONAPIResponse, RecordOperation>;
export interface QueryRequestProcessor {
(requestProcessor: JSONAPIRequestProcessor, request: RecordQueryRequest): Promise<QueryRequestProcessorResponse>;
}
export declare function getQueryRequests(requestProcessor: JSONAPIRequestProcessor, query: RecordQuery): RecordQueryRequest[];
export interface ExpressionToRequestConverter {
(expression: RecordQueryExpression, requestProcessor: JSONAPIRequestProcessor): RecordQueryRequest;
}
export declare const QueryRequestProcessors: Dict<QueryRequestProcessor>;