insert<R> method

  1. @override
Future<Response<T>> insert<R>({
  1. required T data,
  2. R? source(
    1. R parent
    )?,
})
override

Implementation

@override
Future<Response<T>> insert<R>({
  required T data,
  R? Function(R parent)? source,
}) async {
  final response = Response<T>();
  if (data.source.isNotEmpty) {
    final value = await input(data.source);
    if (value.isNotEmpty) {
      final url = data.id.isNotEmpty
          ? currentUrl(data.id, source)
          : currentSource(source);
      final reference = await database.post(url, data: value);
      final code = reference.statusCode;
      if (code == 200 || code == 201 || code == encryptor.status.created) {
        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);
  }
}