updateFromProto3Json method
Implementation
Future<Either<ErrorSqlResult, ExecuteSuccesSqlResult>> updateFromProto3Json(
Map<String, dynamic> proto3Json) async {
clear();
try {
var pkfields = _currentRecord.fields
.where((element) => element._isPrimaryKey)
.toList();
pkfields.forEach((pkfield) {
if (proto3Json.containsKey(camelize(pkfield._fieldName, true))) {
pkfield._trySetValue((proto3Json[camelize(pkfield._fieldName, true)]
as Map<String, dynamic>)['value']);
}
});
if (pkfields.length !=
pkfields.where((element) => element._assigned).length) {
return left(
ErrorSqlResult('', '', '', ['All pkField must be assigned']));
} else {
return (await _materialize(pkfields)).fold((l) {
return left(l);
}, (r) {
proto3Json.forEach((key, value) {
_currentRecord.fields
.singleWhere((field) => camelize(field._fieldName, true) == key)
._trySetValue((value as Map<String, dynamic>)['value']);
});
return update();
});
}
} catch (e) {
return left(ErrorSqlResult('', '', '', [e.toString()]));
}
}