mutate Data
Serializes the value returned by Mutator function into an equivalent JsonObject using a serializer retrieved from reified type parameter and uses the JsonObject to mutate value of the SyncDocument
The Mutator function could be invoked more than once in case of data collision, i.e. if data on backend is modified while the mutate operation is executing. It guarantees that Mutator generates new value based on latest document data.
Type T must be annotated with @Serializable.
Possible use case is to implement distributed counter:
@Serializable
data class Counter(val value: Long = 0) {
operator fun plus(x: Long) = Counter(value + x)
}
document.mutateData<Counter> { counter -> counter + 1 }
Parameters
Mutator which will be applied to document data.
This function will be provided with the
previous data contents and should return new desired contents or null to abort
mutate operation. This function is invoked on a background thread.
Once this method finished the [data] property contains updated document data.
Throws
If the SyncDocument.data is not a valid JSON input for the type T.
If the value returned by the Mutator cannot be represented as a valid instance of type T.
When error occurred while mutating the document.