Skip to content

Commit 7b8398d

Browse files
committed
Refactor with type OverlayedDocumentMap. Add Comments. Fix nit.
1 parent c4f87be commit 7b8398d

File tree

6 files changed

+30
-24
lines changed

6 files changed

+30
-24
lines changed

packages/firestore/src/local/index_backfiller.ts

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -109,6 +109,13 @@ export class IndexBackfillerScheduler implements Scheduler {
109109
/** Implements the steps for backfilling indexes. */
110110
export class IndexBackfiller {
111111
constructor(
112+
/**
113+
* LocalStore provides access to IndexManager and LocalDocumentView.
114+
* These properties will update when the user changes. Consequently,
115+
* making a local copy of IndexManager and LocalDocumentView will require
116+
* updates over time. The simpler solution is to rely on LocalStore to have
117+
* an up-to-date references to IndexManager and LocalDocumentStore.
118+
*/
112119
private readonly localStore: LocalStore,
113120
private readonly persistence: Persistence
114121
) {}

packages/firestore/src/local/indexeddb_index_manager.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -983,7 +983,7 @@ export class IndexedDbIndexManager implements IndexManager {
983983
this.getSubTargets(target),
984984
(subTarget: Target) =>
985985
this.getFieldIndex(transaction, subTarget).next(index =>
986-
!index ? fail('Target cannot be served from index') : index
986+
index ? index : fail('Target cannot be served from index')
987987
)
988988
).next(getMinOffsetFromFieldIndexes);
989989
}

packages/firestore/src/local/local_documents_view.ts

Lines changed: 7 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,9 @@ import {
3535
mutableDocumentMap,
3636
documentKeySet,
3737
DocumentKeyMap,
38-
convertDocumentKeyMapWithOverlayedDocumentToDocumentMap
38+
convertOverlayedDocumentMapToDocumentMap,
39+
OverlayedDocumentMap,
40+
newOverlayedDocumentMap
3941
} from '../model/collections';
4042
import { Document, MutableDocument } from '../model/document';
4143
import { DocumentKey } from '../model/document_key';
@@ -167,7 +169,7 @@ export class LocalDocumentsView {
167169
getOverlayedDocuments(
168170
transaction: PersistenceTransaction,
169171
docs: MutableDocumentMap
170-
): PersistencePromise<DocumentKeyMap<OverlayedDocument>> {
172+
): PersistencePromise<OverlayedDocumentMap> {
171173
const overlays = newOverlayMap();
172174
return this.populateOverlays(transaction, overlays, docs).next(() =>
173175
this.computeViews(transaction, docs, overlays, documentKeySet())
@@ -215,10 +217,10 @@ export class LocalDocumentsView {
215217
docs: MutableDocumentMap,
216218
overlays: OverlayMap,
217219
existenceStateChanged: DocumentKeySet
218-
): PersistencePromise<DocumentKeyMap<OverlayedDocument>> {
220+
): PersistencePromise<OverlayedDocumentMap> {
219221
let recalculateDocuments = mutableDocumentMap();
220222
const mutatedFields = newDocumentKeyMap<FieldMask | null>();
221-
const results = newDocumentKeyMap<OverlayedDocument>();
223+
const results = newOverlayedDocumentMap();
222224
docs.forEach((_, doc) => {
223225
const overlay = overlays.get(doc.key);
224226
// Recalculate an overlay if the document's existence state changed due to
@@ -442,10 +444,7 @@ export class LocalDocumentsView {
442444
)
443445
.next(localDocs => ({
444446
batchId: largestBatchId,
445-
changes:
446-
convertDocumentKeyMapWithOverlayedDocumentToDocumentMap(
447-
localDocs
448-
)
447+
changes: convertOverlayedDocumentMapToDocumentMap(localDocs)
449448
}));
450449
});
451450
});

packages/firestore/src/local/local_store_impl.ts

Lines changed: 6 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -28,13 +28,13 @@ import { canonifyTarget, Target, targetEquals } from '../core/target';
2828
import { BatchId, TargetId } from '../core/types';
2929
import { Timestamp } from '../lite-api/timestamp';
3030
import {
31-
convertDocumentKeyMapWithOverlayedDocumentToDocumentMap,
32-
DocumentKeyMap,
31+
convertOverlayedDocumentMapToDocumentMap,
3332
documentKeySet,
3433
DocumentKeySet,
3534
DocumentMap,
3635
mutableDocumentMap,
37-
MutableDocumentMap
36+
MutableDocumentMap,
37+
OverlayedDocumentMap
3838
} from '../model/collections';
3939
import { Document } from '../model/document';
4040
import { DocumentKey } from '../model/document_key';
@@ -77,7 +77,6 @@ import { LocalStore } from './local_store';
7777
import { LocalViewChanges } from './local_view_changes';
7878
import { LruGarbageCollector, LruResults } from './lru_garbage_collector';
7979
import { MutationQueue } from './mutation_queue';
80-
import { OverlayedDocument } from './overlayed_document';
8180
import { Persistence } from './persistence';
8281
import { PersistencePromise } from './persistence_promise';
8382
import { PersistenceTransaction } from './persistence_transaction';
@@ -318,7 +317,7 @@ export function localStoreWriteLocally(
318317
const localWriteTime = Timestamp.now();
319318
const keys = mutations.reduce((keys, m) => keys.add(m.key), documentKeySet());
320319

321-
let overlayedDocuments: DocumentKeyMap<OverlayedDocument>;
320+
let overlayedDocuments: OverlayedDocumentMap;
322321
let mutationBatch: MutationBatch;
323322

324323
return localStoreImpl.persistence
@@ -350,7 +349,7 @@ export function localStoreWriteLocally(
350349
remoteDocs
351350
);
352351
})
353-
.next((docs: DocumentKeyMap<OverlayedDocument>) => {
352+
.next((docs: OverlayedDocumentMap) => {
354353
overlayedDocuments = docs;
355354

356355
// For non-idempotent mutations (such as `FieldValue.increment()`),
@@ -402,10 +401,7 @@ export function localStoreWriteLocally(
402401
})
403402
.then(() => ({
404403
batchId: mutationBatch.batchId,
405-
changes:
406-
convertDocumentKeyMapWithOverlayedDocumentToDocumentMap(
407-
overlayedDocuments
408-
)
404+
changes: convertOverlayedDocumentMapToDocumentMap(overlayedDocuments)
409405
}));
410406
}
411407

packages/firestore/src/model/collections.ts

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -55,8 +55,13 @@ export function documentMap(...docs: Document[]): DocumentMap {
5555
return map;
5656
}
5757

58-
export function convertDocumentKeyMapWithOverlayedDocumentToDocumentMap(
59-
collection: DocumentKeyMap<OverlayedDocument>
58+
export type OverlayedDocumentMap = DocumentKeyMap<OverlayedDocument>;
59+
export function newOverlayedDocumentMap(): OverlayedDocumentMap {
60+
return newDocumentKeyMap<OverlayedDocument>();
61+
}
62+
63+
export function convertOverlayedDocumentMapToDocumentMap(
64+
collection: OverlayedDocumentMap
6065
): DocumentMap {
6166
let documents = EMPTY_DOCUMENT_MAP;
6267
collection.forEach(

packages/firestore/src/model/mutation_batch.ts

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,6 @@
1818
import { SnapshotVersion } from '../core/snapshot_version';
1919
import { BatchId } from '../core/types';
2020
import { Timestamp } from '../lite-api/timestamp';
21-
import { OverlayedDocument } from '../local/overlayed_document';
2221
import { debugAssert, hardAssert } from '../util/assert';
2322
import { arrayEquals } from '../util/misc';
2423

@@ -29,7 +28,7 @@ import {
2928
DocumentVersionMap,
3029
documentVersionMap,
3130
newMutationMap,
32-
DocumentKeyMap
31+
OverlayedDocumentMap
3332
} from './collections';
3433
import { MutableDocument } from './document';
3534
import { FieldMask } from './field_mask';
@@ -140,7 +139,7 @@ export class MutationBatch {
140139
* replace all the mutation applications.
141140
*/
142141
applyToLocalDocumentSet(
143-
documentMap: DocumentKeyMap<OverlayedDocument>,
142+
documentMap: OverlayedDocumentMap,
144143
documentsWithoutRemoteVersion: DocumentKeySet
145144
): MutationMap {
146145
// TODO(mrschmidt): This implementation is O(n^2). If we apply the mutations

0 commit comments

Comments
 (0)