delete<R> method

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

Implementation

@override
Future<Response<T>> delete<R>(
  String id, {
  Map<String, dynamic>? extra,
  R? Function(R parent)? source,
}) async {
  final response = Response<T>();
  try {
    if (id.isNotEmpty && extra != null && extra.isNotEmpty) {
      final value = await input(extra);
      if (value.isNotEmpty) {
        final url = currentUrl(id, source);
        final reference = await database.delete(url, data: value);
        final code = reference.statusCode;
        if (code == 200 || code == encryptor.status.deleted) {
          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 request!";
      return response.copy(error: error);
    }
  } catch (_) {
    return response.copy(error: _.toString());
  }
}