update method
Updates fields in the document.
Parameters:
data: The data to update.transObj: Optional transaction object.
Returns: A Future that completes when the update is done.
Example:
await docRef.update({'age': 30});
Implementation
Future<void> update(Map<Object, Object?> data, [dynamic transObj]) async {
if (transObj == null) {
transObj = {"name": "", "start": 0, "end": 0};
}
;
FusabaseAuth auth = FusabaseAuth.instanceFor(app: this._oracledb.app);
dynamic finalData = convertMap(data);
String? accessToken = await getAccessToken(auth);
if (checkOracledbApiVersion(
_oracledb.app.options,
OracledbVersion["VERSION_1"] ?? 1,
)) {
dynamic docData;
dynamic transData = null;
if (transObj != null) {
transData = {
"name": transObj["name"],
"start": transObj["start"],
"end": 0,
"version": transObj["version"],
};
}
try {
docData = await this.get(null, transData);
if (transObj != null && transObj["start"] == 1) {
transObj["start"] = 0;
}
} catch (e) {
throw Utils.oracledbErrorHandler(
404,
OracledbErrorMessages.noSuchDocument,
null,
);
}
finalData = updateNestedData(this, docData._data, finalData);
finalData = parseTimestamp(finalData);
} else if (checkOracledbApiVersion(
_oracledb.app.options,
OracledbVersion["VERSION_2"] ?? 2,
)) {
finalData = createPayloadForUpdateVersion2New(this, finalData, false);
finalData = parseTimestamp(finalData);
finalData = rearrangeBodyOfVersion2(finalData);
}
dynamic result = await _helper.updatedoc(
createClient(_oracledb.app),
this,
finalData,
this.__logLevel,
accessToken,
transObj,
);
if (result["OID"] == null) {
throw Utils.oracledbErrorHandler(
500,
OracledbErrorMessages.errorFetchingDocumentUpdate,
null,
);
}
return;
}