aboutsummaryrefslogtreecommitdiffhomepage
path: root/Firestore/core/src/firebase/firestore/model/field_value.h
diff options
context:
space:
mode:
authorGravatar zxu <zxu@google.com>2018-02-12 17:00:25 -0500
committerGravatar GitHub <noreply@github.com>2018-02-12 17:00:25 -0500
commitadf9fb31eeef639ef23b2ff22a71adaa91a263b7 (patch)
treefe302ae8527b8b39669fa937b364b55d812ec610 /Firestore/core/src/firebase/firestore/model/field_value.h
parent4afcfb1b11a9ab2cd3ae4ee212093cce845a5978 (diff)
Update FieldValue of type Reference (#775)
* update FieldValue of type Reference * address change * fix bad path string literal in test * use ReferenceValue and qualified name
Diffstat (limited to 'Firestore/core/src/firebase/firestore/model/field_value.h')
-rw-r--r--Firestore/core/src/firebase/firestore/model/field_value.h15
1 files changed, 14 insertions, 1 deletions
diff --git a/Firestore/core/src/firebase/firestore/model/field_value.h b/Firestore/core/src/firebase/firestore/model/field_value.h
index d43b23f..e547be3 100644
--- a/Firestore/core/src/firebase/firestore/model/field_value.h
+++ b/Firestore/core/src/firebase/firestore/model/field_value.h
@@ -25,6 +25,8 @@
#include <vector>
#include "Firestore/core/include/firebase/firestore/geo_point.h"
+#include "Firestore/core/src/firebase/firestore/model/database_id.h"
+#include "Firestore/core/src/firebase/firestore/model/document_key.h"
#include "Firestore/core/src/firebase/firestore/model/timestamp.h"
namespace firebase {
@@ -38,6 +40,12 @@ struct ServerTimestamp {
bool has_previous_value_;
};
+struct ReferenceValue {
+ DocumentKey reference;
+ // Does not own the DatabaseId instance.
+ const DatabaseId* database_id;
+};
+
/**
* tagged-union class representing an immutable data value as stored in
* Firestore. FieldValue represents all the different kinds of values
@@ -103,7 +111,10 @@ class FieldValue {
static FieldValue StringValue(const std::string& value);
static FieldValue StringValue(std::string&& value);
static FieldValue BlobValue(const uint8_t* source, size_t size);
- // static FieldValue ReferenceValue();
+ static FieldValue ReferenceValue(const DocumentKey& value,
+ const DatabaseId* database_id);
+ static FieldValue ReferenceValue(DocumentKey&& value,
+ const DatabaseId* database_id);
static FieldValue GeoPointValue(const GeoPoint& value);
static FieldValue ArrayValue(const std::vector<FieldValue>& value);
static FieldValue ArrayValue(std::vector<FieldValue>&& value);
@@ -133,6 +144,8 @@ class FieldValue {
ServerTimestamp server_timestamp_value_;
std::string string_value_;
std::vector<uint8_t> blob_value_;
+ // Qualified name to avoid conflict with the member function of same name.
+ firebase::firestore::model::ReferenceValue reference_value_;
GeoPoint geo_point_value_;
std::vector<FieldValue> array_value_;
std::map<const std::string, const FieldValue> object_value_;