update<R> method
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 value = await input(data);
if (value.isNotEmpty) {
final url = currentUrl(id, source);
final reference = await database.put(url, data: value);
final code = reference.statusCode;
if (code == 200 || code == encryptor.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 {
const error = "Unacceptable request!";
return response.copy(error: error);
}
} else {
const error = "Undefined data!";
return response.copy(error: error);
}
} catch (_) {
return response.copy(error: _.toString());
}
}