@orbit/record-cache
Version:
Orbit base classes used to access and maintain a set of records.
50 lines (49 loc) • 2.97 kB
TypeScript
import { RecordKeyMap, InitializedRecord, RecordSchema, RecordIdentity } from '@orbit/records';
export interface RelatedRecordIdentity {
record: RecordIdentity;
relationship: string;
}
export interface RecordRelationshipIdentity {
record: RecordIdentity;
relationship: string;
relatedRecord: RecordIdentity;
}
export interface BaseRecordAccessor {
name?: string;
keyMap?: RecordKeyMap;
schema: RecordSchema;
}
export interface RecordChangeset {
setRecords?: InitializedRecord[];
removeRecords?: RecordIdentity[];
addInverseRelationships?: RecordRelationshipIdentity[];
removeInverseRelationships?: RecordRelationshipIdentity[];
}
export interface SyncRecordAccessor extends BaseRecordAccessor {
getRecordSync(recordIdentity: RecordIdentity): InitializedRecord | undefined;
getRecordsSync(typeOrIdentities?: string | RecordIdentity[]): InitializedRecord[];
getRelatedRecordSync(identity: RecordIdentity, relationship: string): RecordIdentity | null | undefined;
getRelatedRecordsSync(identity: RecordIdentity, relationship: string): RecordIdentity[] | undefined;
getInverseRelationshipsSync(recordIdentityOrIdentities: RecordIdentity | RecordIdentity[]): RecordRelationshipIdentity[];
setRecordSync(record: InitializedRecord): void;
setRecordsSync(records: InitializedRecord[]): void;
removeRecordSync(recordIdentity: RecordIdentity): InitializedRecord | undefined;
removeRecordsSync(recordIdentities: RecordIdentity[]): InitializedRecord[];
addInverseRelationshipsSync(relationships: RecordRelationshipIdentity[]): void;
removeInverseRelationshipsSync(relationships: RecordRelationshipIdentity[]): void;
applyRecordChangesetSync(changeset: RecordChangeset): void;
}
export interface AsyncRecordAccessor extends BaseRecordAccessor {
getRecordAsync(recordIdentity: RecordIdentity): Promise<InitializedRecord | undefined>;
getRecordsAsync(typeOrIdentities?: string | RecordIdentity[]): Promise<InitializedRecord[]>;
getRelatedRecordAsync(identity: RecordIdentity, relationship: string): Promise<RecordIdentity | null | undefined>;
getRelatedRecordsAsync(identity: RecordIdentity, relationship: string): Promise<RecordIdentity[] | undefined>;
getInverseRelationshipsAsync(recordIdentityOrIdentities: RecordIdentity | RecordIdentity[]): Promise<RecordRelationshipIdentity[]>;
setRecordAsync(record: InitializedRecord): Promise<void>;
setRecordsAsync(records: InitializedRecord[]): Promise<void>;
removeRecordAsync(recordIdentity: RecordIdentity): Promise<InitializedRecord | undefined>;
removeRecordsAsync(recordIdentities: RecordIdentity[]): Promise<InitializedRecord[]>;
addInverseRelationshipsAsync(relationships: RecordRelationshipIdentity[]): Promise<void>;
removeInverseRelationshipsAsync(relationships: RecordRelationshipIdentity[]): Promise<void>;
applyRecordChangesetAsync(changeset: RecordChangeset): Promise<void>;
}