update method

  1. @override
Future<Map<String, dynamic>> update(
  1. String? id,
  2. Map<String, dynamic> data, [
  3. Map<String, dynamic>? params
])
override

Overwrites a resource.

Implementation

@override
Future<Map<String, dynamic>> update(String? id, Map<String, dynamic> data,
    [Map<String, dynamic>? params]) {
  //if (data is! Map) {
  //  throw AngelHttpException.badRequest(
  //      message:
  //          'MapService does not support `update` with ${data.runtimeType}.');
  //}
  if (!items.any(_matchesId(id))) return create(data, params);

  return read(id).then((old) {
    if (!items.remove(old)) {
      throw AngelHttpException.notFound(
          message: 'No record found for ID $id');
    }

    var result = Map<String, dynamic>.from(data);
    if (autoIdAndDateFields == true) {
      result
        ..['id'] = id?.toString()
        ..[autoSnakeCaseNames == false ? 'createdAt' : 'created_at'] =
            old[autoSnakeCaseNames == false ? 'createdAt' : 'created_at']
        ..[autoSnakeCaseNames == false ? 'updatedAt' : 'updated_at'] =
            DateTime.now().toIso8601String();
    }
    items.add(result);
    return Future.value(result);
  });
}