Skip to content

Commit bc61060

Browse files
Add IndexManager API
1 parent 0b6e704 commit bc61060

File tree

3 files changed

+151
-5
lines changed

3 files changed

+151
-5
lines changed

packages/firestore/src/local/index_manager.ts

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -57,8 +57,8 @@ export interface IndexManager {
5757
/**
5858
* Adds a field path index.
5959
*
60-
* <p>Values for this index are persisted asynchronously. The index will only be used for query
61-
* execution once values are persisted.
60+
* Values for this index are persisted asynchronously. The index will only be
61+
* used for query execution once values are persisted.
6262
*/
6363
addFieldIndex(
6464
transaction: PersistenceTransaction,
@@ -72,9 +72,11 @@ export interface IndexManager {
7272
): PersistencePromise<void>;
7373

7474
/**
75-
* Returns a list of field indexes that correspond to the specified collection group.
75+
* Returns a list of field indexes that correspond to the specified collection
76+
* group.
7677
*
77-
* @param collectionGroup The collection group to get matching field indexes for.
78+
* @param collectionGroup The collection group to get matching field indexes
79+
* for.
7880
* @return A collection of field indexes for the specified collection group.
7981
*/
8082
getFieldIndexes(
@@ -112,7 +114,7 @@ export interface IndexManager {
112114
*/
113115
getNextCollectionGroupToUpdate(
114116
transaction: PersistenceTransaction
115-
): string | null;
117+
): PersistencePromise<string | null>;
116118

117119
/**
118120
* Sets the collection group's latest read time.

packages/firestore/src/local/indexeddb_index_manager.ts

Lines changed: 72 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,13 @@
1515
* limitations under the License.
1616
*/
1717

18+
import { Target } from '../core/target';
19+
import {
20+
documentKeySet,
21+
DocumentKeySet,
22+
DocumentMap
23+
} from '../model/collections';
24+
import { FieldIndex, IndexOffset } from '../model/field_index';
1825
import { ResourcePath } from '../model/path';
1926
import { debugAssert } from '../util/assert';
2027
import { immediateSuccessor } from '../util/misc';
@@ -102,6 +109,71 @@ export class IndexedDbIndexManager implements IndexManager {
102109
return parentPaths;
103110
});
104111
}
112+
113+
addFieldIndex(
114+
transaction: PersistenceTransaction,
115+
index: FieldIndex
116+
): PersistencePromise<void> {
117+
// TODO(indexing): Implement
118+
return PersistencePromise.resolve();
119+
}
120+
121+
deleteFieldIndex(
122+
transaction: PersistenceTransaction,
123+
index: FieldIndex
124+
): PersistencePromise<void> {
125+
// TODO(indexing): Implement
126+
return PersistencePromise.resolve();
127+
}
128+
129+
getDocumentsMatchingTarget(
130+
transaction: PersistenceTransaction,
131+
fieldIndex: FieldIndex,
132+
target: Target
133+
): PersistencePromise<DocumentKeySet> {
134+
// TODO(indexing): Implement
135+
return PersistencePromise.resolve(documentKeySet());
136+
}
137+
138+
getFieldIndex(
139+
transaction: PersistenceTransaction,
140+
target: Target
141+
): PersistencePromise<FieldIndex | null> {
142+
// TODO(indexing): Implement
143+
return PersistencePromise.resolve<FieldIndex | null>(null);
144+
}
145+
146+
getFieldIndexes(
147+
transaction: PersistenceTransaction,
148+
collectionGroup?: string
149+
): PersistencePromise<FieldIndex[]> {
150+
// TODO(indexing): Implement
151+
return PersistencePromise.resolve<FieldIndex[]>([]);
152+
}
153+
154+
getNextCollectionGroupToUpdate(
155+
transaction: PersistenceTransaction
156+
): PersistencePromise<string | null> {
157+
// TODO(indexing): Implement
158+
return PersistencePromise.resolve<string | null>(null);
159+
}
160+
161+
updateCollectionGroup(
162+
transaction: PersistenceTransaction,
163+
collectionGroup: string,
164+
offset: IndexOffset
165+
): PersistencePromise<void> {
166+
// TODO(indexing): Implement
167+
return PersistencePromise.resolve();
168+
}
169+
170+
updateIndexEntries(
171+
transaction: PersistenceTransaction,
172+
documents: DocumentMap
173+
): PersistencePromise<void> {
174+
// TODO(indexing): Implement
175+
return PersistencePromise.resolve();
176+
}
105177
}
106178

107179
/**

packages/firestore/src/local/memory_index_manager.ts

Lines changed: 72 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,13 @@
1515
* limitations under the License.
1616
*/
1717

18+
import { Target } from '../core/target';
19+
import {
20+
documentKeySet,
21+
DocumentKeySet,
22+
DocumentMap
23+
} from '../model/collections';
24+
import { FieldIndex, IndexOffset } from '../model/field_index';
1825
import { ResourcePath } from '../model/path';
1926
import { debugAssert } from '../util/assert';
2027
import { SortedSet } from '../util/sorted_set';
@@ -45,6 +52,71 @@ export class MemoryIndexManager implements IndexManager {
4552
this.collectionParentIndex.getEntries(collectionId)
4653
);
4754
}
55+
56+
addFieldIndex(
57+
transaction: PersistenceTransaction,
58+
index: FieldIndex
59+
): PersistencePromise<void> {
60+
// Field indices are not supported with memory persistence.
61+
return PersistencePromise.resolve();
62+
}
63+
64+
deleteFieldIndex(
65+
transaction: PersistenceTransaction,
66+
index: FieldIndex
67+
): PersistencePromise<void> {
68+
// Field indices are not supported with memory persistence.
69+
return PersistencePromise.resolve();
70+
}
71+
72+
getDocumentsMatchingTarget(
73+
transaction: PersistenceTransaction,
74+
fieldIndex: FieldIndex,
75+
target: Target
76+
): PersistencePromise<DocumentKeySet> {
77+
// Field indices are not supported with memory persistence.
78+
return PersistencePromise.resolve(documentKeySet());
79+
}
80+
81+
getFieldIndex(
82+
transaction: PersistenceTransaction,
83+
target: Target
84+
): PersistencePromise<FieldIndex | null> {
85+
// Field indices are not supported with memory persistence.
86+
return PersistencePromise.resolve<FieldIndex | null>(null);
87+
}
88+
89+
getFieldIndexes(
90+
transaction: PersistenceTransaction,
91+
collectionGroup?: string
92+
): PersistencePromise<FieldIndex[]> {
93+
// Field indices are not supported with memory persistence.
94+
return PersistencePromise.resolve<FieldIndex[]>([]);
95+
}
96+
97+
getNextCollectionGroupToUpdate(
98+
transaction: PersistenceTransaction
99+
): PersistencePromise<string | null> {
100+
// Field indices are not supported with memory persistence.
101+
return PersistencePromise.resolve<string | null>(null);
102+
}
103+
104+
updateCollectionGroup(
105+
transaction: PersistenceTransaction,
106+
collectionGroup: string,
107+
offset: IndexOffset
108+
): PersistencePromise<void> {
109+
// Field indices are not supported with memory persistence.
110+
return PersistencePromise.resolve();
111+
}
112+
113+
updateIndexEntries(
114+
transaction: PersistenceTransaction,
115+
documents: DocumentMap
116+
): PersistencePromise<void> {
117+
// Field indices are not supported with memory persistence.
118+
return PersistencePromise.resolve();
119+
}
48120
}
49121

50122
/**

0 commit comments

Comments
 (0)