firebase / firebase/firebase-cpp-sdk

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

未关闭
#649 2 条评论 0 个 reaction 已指派 0 人 在 GitHub 查看
api: database type: feature request
主要语言
C++
星标
326
派生
137
平均合并
3 天 9 小时
30 天内合并 PR
5

描述

### 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)

贡献指南

打开贡献指南

评估

这个 Issue 还没有评估数据。

把新 issue 发到你的邮箱

精选适合新手参与的 GitHub issue 摘要。