in lib/src/grpc_api_impl/datastore_impl.dart [472:501]
Object? decodeValue(Value value) {
if (value.hasBooleanValue()) {
return value.booleanValue;
} else if (value.hasStringValue()) {
return value.stringValue;
} else if (value.hasIntegerValue()) {
return value.integerValue.toInt();
} else if (value.hasBlobValue()) {
return raw.BlobValue(value.blobValue);
} else if (value.hasDoubleValue()) {
return value.doubleValue;
} else if (value.hasKeyValue()) {
return decodeKey(value.keyValue);
} else if (value.hasNullValue()) {
return null;
} else if (value.hasTimestampValue()) {
final ts = value.timestampValue;
int us = ts.seconds.toInt() * 1000 * 1000;
if (ts.hasNanos()) us += ts.nanos ~/ 1000;
return DateTime.fromMicrosecondsSinceEpoch(us, isUtc: true);
} else if (value.hasArrayValue()) {
return value.arrayValue.values.map(decodeValue).toList();
} else if (value.hasGeoPointValue()) {
throw UnimplementedError('GeoPoint values are not supported yet.');
} else if (value.hasEntityValue()) {
throw UnimplementedError('Entity values are not supported yet.');
}
throw Exception('Unreachable');
}