update method

Future<void> update(
  1. Map<Object, Object?> data,
  2. [dynamic transObj]
)

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;
}