Skip to content

Commit 6695859

Browse files
Add QueryData.with() helpers
Port of firebase/firebase-js-sdk#2148
1 parent ca8570a commit 6695859

File tree

8 files changed

+29
-20
lines changed

8 files changed

+29
-20
lines changed

Firestore/Example/Tests/Local/FSTLRUGarbageCollectorTests.mm

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -179,8 +179,7 @@ - (QueryData)addNextQueryInTransaction {
179179
}
180180

181181
- (void)updateTargetInTransaction:(const QueryData &)queryData {
182-
QueryData updated = queryData.Copy(queryData.snapshot_version(), testutil::ResumeToken(7),
183-
_persistence->current_sequence_number());
182+
QueryData updated = queryData.WithSequenceNumber(_persistence->current_sequence_number());
184183
_queryCache->UpdateTarget(updated);
185184
}
186185

Firestore/Example/Tests/SpecTests/FSTMockDatastore.mm

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -106,8 +106,7 @@ void WatchQuery(const QueryData& query) override {
106106
query.resume_token().ToString());
107107

108108
// Snapshot version is ignored on the wire
109-
QueryData sentQueryData =
110-
query.Copy(SnapshotVersion::None(), query.resume_token(), query.sequence_number());
109+
QueryData sentQueryData = query.WithResumeToken(query.resume_token(), SnapshotVersion::None());
111110
datastore_->IncrementWatchStreamRequests();
112111
active_targets_[query.target_id()] = sentQueryData;
113112
}

Firestore/core/src/firebase/firestore/local/leveldb_lru_reference_delegate.mm

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -71,9 +71,7 @@
7171
}
7272

7373
void LevelDbLruReferenceDelegate::RemoveTarget(const QueryData& query_data) {
74-
QueryData updated =
75-
query_data.Copy(query_data.snapshot_version(), query_data.resume_token(),
76-
current_sequence_number());
74+
QueryData updated = query_data.WithSequenceNumber(current_sequence_number());
7775
db_->query_cache()->UpdateTarget(std::move(updated));
7876
}
7977

Firestore/core/src/firebase/firestore/local/local_store.mm

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -266,8 +266,10 @@
266266
const ByteString& resume_token = change.resume_token();
267267
// Update the resume token if the change includes one.
268268
if (!resume_token.empty()) {
269-
QueryData new_query_data = old_query_data.Copy(
270-
remote_event.snapshot_version(), resume_token, sequence_number);
269+
QueryData new_query_data =
270+
old_query_data
271+
.WithResumeToken(resume_token, remote_event.snapshot_version())
272+
.WithSequenceNumber(sequence_number);
271273
target_ids[target_id] = new_query_data;
272274

273275
// Update the query data if there are target changes (or if sufficient

Firestore/core/src/firebase/firestore/local/memory_lru_reference_delegate.cc

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -65,9 +65,7 @@ void MemoryLruReferenceDelegate::AddInMemoryPins(ReferenceSet* set) {
6565
}
6666

6767
void MemoryLruReferenceDelegate::RemoveTarget(const QueryData& query_data) {
68-
QueryData updated =
69-
query_data.Copy(query_data.snapshot_version(), query_data.resume_token(),
70-
current_sequence_number_);
68+
QueryData updated = query_data.WithSequenceNumber(current_sequence_number_);
7169
persistence_->query_cache()->UpdateTarget(updated);
7270
}
7371

Firestore/core/src/firebase/firestore/local/query_data.cc

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -85,10 +85,16 @@ QueryData QueryData::Invalid() {
8585
SnapshotVersion(SnapshotVersion::None()), {});
8686
}
8787

88-
QueryData QueryData::Copy(SnapshotVersion snapshot_version,
89-
ByteString resume_token,
90-
model::ListenSequenceNumber sequence_number) const {
88+
QueryData QueryData::WithSequenceNumber(
89+
model::ListenSequenceNumber sequence_number) const {
9190
return QueryData(Query(query_), target_id_, sequence_number, purpose_,
91+
snapshot_version_, resume_token_);
92+
}
93+
94+
QueryData QueryData::WithResumeToken(
95+
nanopb::ByteString resume_token,
96+
model::SnapshotVersion snapshot_version) const {
97+
return QueryData(Query(query_), target_id_, sequence_number_, purpose_,
9298
std::move(snapshot_version), std::move(resume_token));
9399
}
94100

Firestore/core/src/firebase/firestore/local/query_data.h

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -129,9 +129,16 @@ class QueryData {
129129
return resume_token_;
130130
}
131131

132-
QueryData Copy(model::SnapshotVersion snapshot_version,
133-
nanopb::ByteString resume_token,
134-
model::ListenSequenceNumber sequence_number) const;
132+
/** Creates a new query data instance with an updated sequence number. */
133+
QueryData WithSequenceNumber(
134+
model::ListenSequenceNumber sequence_number) const;
135+
136+
/**
137+
* Creates a new query data instance with an updated resume token and
138+
* snapshot version.
139+
*/
140+
QueryData WithResumeToken(nanopb::ByteString resume_token,
141+
model::SnapshotVersion snapshot_version) const;
135142

136143
friend bool operator==(const QueryData& lhs, const QueryData& rhs);
137144

Firestore/core/src/firebase/firestore/remote/remote_store.mm

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -288,8 +288,8 @@
288288

289289
// A watched target might have been removed already.
290290
if (query_data) {
291-
listen_targets_[target_id] = query_data->Copy(
292-
snapshot_version, resumeToken, query_data->sequence_number());
291+
listen_targets_[target_id] =
292+
query_data->WithResumeToken(resumeToken, snapshot_version);
293293
}
294294
}
295295
}

0 commit comments

Comments
 (0)