Skip to content

Commit 3d7391b

Browse files
Cleanup
1 parent 6a20f51 commit 3d7391b

File tree

2 files changed

+42
-5
lines changed

2 files changed

+42
-5
lines changed

firestore/src/main/document_snapshot_main.cc

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -185,12 +185,13 @@ FieldValue DocumentSnapshotInternal::ConvertServerTimestamp(
185185
case ServerTimestampBehavior::kNone:
186186
return FieldValue::Null();
187187
case ServerTimestampBehavior::kEstimate: {
188-
auto timestamp = GetLocalWriteTime(server_timestamp);
188+
google_firestore_v1_Value timestamp = GetLocalWriteTime(server_timestamp);
189189
return FieldValue::Timestamp(
190190
Timestamp(timestamp.seconds, timestamp.nanos));
191191
}
192192
case ServerTimestampBehavior::kPrevious:
193-
auto previous_value = GetPreviousValue(server_timestamp);
193+
google_firestore_v1_Value previous_value =
194+
GetPreviousValue(server_timestamp);
194195
if (previous_value) {
195196
return ConvertScalar(*previous_value, stb);
196197
}

firestore/src/main/field_value_main.cc

Lines changed: 39 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -206,16 +206,52 @@ FieldValue FieldValueInternal::IntegerIncrement(std::int64_t by_value) {
206206
FieldValue FieldValueInternal::DoubleIncrement(double by_value) {
207207
Message<google_firestore_v1_Value> value;
208208
value->which_value_type = google_firestore_v1_Value_double_value_tag;
209-
value->integer_value = by_value;
209+
value->double_value = by_value;
210210
return MakePublic(
211211
FieldValueInternal{Type::kIncrementDouble, std::move(value)});
212212
}
213213

214214
// Equality operator
215215

216216
bool operator==(const FieldValueInternal& lhs, const FieldValueInternal& rhs) {
217-
return *absl::get<SharedMessage<google_firestore_v1_Value>>(lhs.value_) ==
218-
*absl::get<SharedMessage<google_firestore_v1_Value>>(rhs.value_);
217+
using ArrayT = FieldValueInternal::ArrayT;
218+
using MapT = FieldValueInternal::MapT;
219+
220+
auto type = lhs.type();
221+
if (type != rhs.type()) {
222+
return false;
223+
}
224+
225+
switch (type) {
226+
case Type::kNull:
227+
case Type::kBoolean:
228+
case Type::kInteger:
229+
case Type::kDouble:
230+
case Type::kTimestamp:
231+
case Type::kString:
232+
case Type::kBlob:
233+
case Type::kGeoPoint:
234+
// Sentinels
235+
case Type::kIncrementDouble:
236+
case Type::kIncrementInteger:
237+
case Type::kDelete:
238+
case Type::kServerTimestamp:
239+
return *absl::get <
240+
SharedMessage<google_firestore_v1_Value>(lhs.value_) ==
241+
*absl::get < SharedMessage<google_firestore_v1_Value>(rhs.value_);
242+
243+
case Type::kReference:
244+
return absl::get<DocumentReference>(lhs.value_) ==
245+
absl::get<DocumentReference>(rhs.value_);
246+
247+
case Type::kArray:
248+
case Type::kArrayRemove:
249+
case Type::kArrayUnion:
250+
return absl::get<ArrayT>(lhs.value_) == absl::get<ArrayT>(rhs.value_);
251+
252+
case Type::kMap:
253+
return absl::get<MapT>(lhs.value_) == absl::get<MapT>(rhs.value_);
254+
}
219255
}
220256

221257
std::string Describe(Type type) {

0 commit comments

Comments
 (0)