@orbit/records
Version:
A flexible data access and synchronization layer.
41 lines (40 loc) • 1.86 kB
TypeScript
import { QueryBuilderFunc } from '@orbit/data';
import { StandardValidator, ValidatorForFn } from '@orbit/validators';
import { RecordIdentity } from './record';
import { RecordNormalizer } from './record-normalizer';
import { RecordQueryExpression } from './record-query-expression';
import { FindRecordsTerm, FindRecordTerm, FindRelatedRecordTerm } from './record-query-term';
import { RecordSchema } from './record-schema';
import { StandardRecordValidator } from './record-validators/standard-record-validators';
export declare type RecordQueryBuilderFunc = QueryBuilderFunc<RecordQueryExpression, RecordQueryBuilder>;
export interface RecordQueryBuilderSettings<RT = string, RI = RecordIdentity> {
schema?: RecordSchema;
normalizer?: RecordNormalizer<RT, RI>;
validatorFor?: ValidatorForFn<StandardValidator | StandardRecordValidator>;
}
export declare class RecordQueryBuilder<RT = string, RI = RecordIdentity> {
$schema?: RecordSchema;
$normalizer?: RecordNormalizer<RT, RI>;
$validatorFor?: ValidatorForFn<StandardValidator | StandardRecordValidator>;
constructor(settings?: RecordQueryBuilderSettings<RT, RI>);
/**
* Find a record by its identity.
*/
findRecord(record: RI): FindRecordTerm<RT, RI>;
/**
* Find all records of a specific type.
*
* If `type` is unspecified, find all records unfiltered by type.
*/
findRecords(typeOrIdentities?: RT | RI[]): FindRecordsTerm<RT, RI>;
/**
* Find a record in a to-one relationship.
*/
findRelatedRecord(record: RI, relationship: string): FindRelatedRecordTerm<RT, RI>;
/**
* Find records in a to-many relationship.
*/
findRelatedRecords(record: RI, relationship: string): FindRecordsTerm<RT, RI>;
$normalizeRecordType(rt: RT): string;
$normalizeRecordIdentity(ri: RI): RecordIdentity;
}