@orbit/records
Version:
A flexible data access and synchronization layer.
78 lines (77 loc) • 2.93 kB
TypeScript
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;