firebase / firebase/firebase-cpp-sdk

[FR] Database (Desktop): Add support for special server value Increment

Đang mở
#649 2 bình luận 0 reaction 0 người được giao Xem trên GitHub
api: database type: feature request
Ngôn ngữ chính
C++
Star
326
Fork
137
Merge trung bình
3 ngày 9 giờ
Pull request đã merge (30 ngày)
5

Mô tả

### Feature proposal

* Firebase Component: Database

As of last year, Realtime Database [supports a special value for incrementing locations in the database atomically without running a transaction](https://firebase.google.com/support/release-notes/js#version_7140_-_april_9_2020), but this feature is not exposed in the C++ (or Unity) implementations.

This is accomplished in Java by assigning a value in the database to `ServerValue.increment()`. This is similar to how timestamps work, with `ServerValue.timestamp()`. Both functions return a special value that is treated specially on the server and client.

In C++ we have a [ServerTimestamp()](
https://github.com/firebase/firebase-cpp-sdk/blob/3c2190901976a218cd4dc91b0e6aae5afc8d9291/database/src/include/firebase/database/common.h#L78) function that returns that special value. We should add a new function, something like `ServerValueIncrement()` or something similar, which generates the special value for the developer. IIRC the special value is just a map containing `{".sv":"increment"}` or something similar.

This special value would then get special handling in [server_values.cc](https://github.com/firebase/firebase-cpp-sdk/blob/main/database/src/desktop/core/server_values.cc) so that the operation can be approximated locally while the data makes its server round trip.

[Here is the Java implementation of the server value](https://github.com/firebase/firebase-android-sdk/blob/67f91adb82f3ccf5e94a6c44beef7188f83ec324/firebase-database/src/main/java/com/google/firebase/database/core/ServerValues.java#L32) code. This logic can probably be duplicated in C++ without much trouble. Pay attention in particular to [resolveComplextDeferredValue()](https://github.com/firebase/firebase-android-sdk/blob/67f91adb82f3ccf5e94a6c44beef7188f83ec324/firebase-database/src/main/java/com/google/firebase/database/core/ServerValues.java#L70)

Hướng dẫn đóng góp

Mở hướng dẫn đóng góp

Đánh giá

Issue này chưa được đánh giá.

Nhận issue mới trong hộp thư của bạn

Bản tóm tắt ngắn những issue GitHub phù hợp với người mới.