/
record-accessor.ts
102 lines (94 loc) · 3.03 KB
/
record-accessor.ts
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
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 {
// Getters
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[];
// Setters
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 {
// Getters
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[]>;
// Setters
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>;
}