update<R> method

  1. @override
Future<Response<T>> update<R>(
  1. String id,
  2. Map<String, dynamic> data, {
  3. R? source(
    1. R parent
    )?,
})
override

Implementation

@override
Future<Response<T>> update<R>(
  String id,
  Map<String, dynamic> data, {
  R? Function(R parent)? source,
}) async {
  Response<T> response = const Response();
  try {
    if (data.isNotEmpty) {
      final url = currentUrl(id, source);
      final reference = await database.put(url, data: data);
      final code = reference.statusCode;
      if (code == 200 || code == 201 || code == api.status.updated) {
        final result = reference.data;
        return response.copy(result: result);
      } else {
        final error = "Data unmodified [${reference.statusCode}]";
        return response.copy(snapshot: reference, error: error);
      }
    } else {
      final error = "Undefined data $data";
      return response.copy(error: error);
    }
  } catch (_) {
    return response.copy(error: _.toString());
  }
}