UNPKG

@orbit/records

Version:

A flexible data access and synchronization layer.

78 lines (77 loc) 2.93 kB
import { QueryExpression } from '@orbit/data'; import { RecordIdentity, InitializedRecord } from './record'; export declare type SortOrder = 'ascending' | 'descending'; export interface BaseSortSpecifier { kind: string; order: SortOrder; } export interface AttributeSortSpecifier extends BaseSortSpecifier { kind: 'attribute'; attribute: string; } export declare type SortSpecifier = BaseSortSpecifier | AttributeSortSpecifier; export declare type ValueComparisonOperator = 'equal' | 'gt' | 'lt' | 'gte' | 'lte'; export declare type SetComparisonOperator = 'equal' | 'all' | 'some' | 'none'; export interface BaseFilterSpecifier { kind: string; op: ValueComparisonOperator | SetComparisonOperator; } export interface AttributeFilterSpecifier extends BaseFilterSpecifier { kind: 'attribute'; op: ValueComparisonOperator; attribute: string; value: any; } export interface RelatedRecordFilterSpecifier extends BaseFilterSpecifier { kind: 'relatedRecord'; op: SetComparisonOperator; relation: string; record: RecordIdentity | RecordIdentity[] | null; } export interface RelatedRecordsFilterSpecifier extends BaseFilterSpecifier { kind: 'relatedRecords'; op: SetComparisonOperator; relation: string; records: RecordIdentity[]; } export declare type FilterSpecifier = BaseFilterSpecifier | AttributeFilterSpecifier | RelatedRecordFilterSpecifier | RelatedRecordsFilterSpecifier; export interface BasePageSpecifier { kind: string; } export interface OffsetLimitPageSpecifier extends BasePageSpecifier { kind: 'offsetLimit'; offset?: number; limit?: number; } export declare type PageSpecifier = BasePageSpecifier | OffsetLimitPageSpecifier; export interface FindRecord extends QueryExpression { op: 'findRecord'; record: RecordIdentity; } export interface FindRelatedRecord extends QueryExpression { op: 'findRelatedRecord'; record: RecordIdentity; relationship: string; } export interface FindRelatedRecords extends QueryExpression { op: 'findRelatedRecords'; record: RecordIdentity; relationship: string; sort?: SortSpecifier[]; filter?: FilterSpecifier[]; page?: PageSpecifier; } export interface FindRecords extends QueryExpression { op: 'findRecords'; records?: RecordIdentity[]; type?: string; sort?: SortSpecifier[]; filter?: FilterSpecifier[]; page?: PageSpecifier; } export declare type RecordQueryExpression = FindRecord | FindRelatedRecord | FindRelatedRecords | FindRecords; export declare type FindRecordResult = InitializedRecord | undefined; export declare type FindRelatedRecordResult = InitializedRecord | null | undefined; export declare type FindRelatedRecordsResult = InitializedRecord[] | undefined; export declare type FindRecordsResult = InitializedRecord[]; export declare type RecordQueryExpressionResult<T = InitializedRecord> = T | T[] | null | undefined;