UNPKG

@orbit/records

Version:

A flexible data access and synchronization layer.

41 lines (40 loc) 1.86 kB
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; }