mergeOne method
Implementation
Future<FormResultFree?> mergeOne(
String id,
Map<String, Object?> data,
) async {
var oldData = await getById(id);
if (oldData == null) {
return null;
}
FormResultFree validationResult = await validate(
data,
onlyCheckKeys: data.keys.toList(),
);
var newData = validationResult.formValues();
var mergedData = {
...oldData,
...newData,
};
if (validationResult.success) {
var result = await collection.replaceOne(
where.id(id.oID!),
mergedData,
upsert: false,
);
var newUpdate = await getById(id);
if (result.isSuccess && newUpdate != null) {
validationResult.updateValues(newUpdate);
await collectionEvent.onUpdate.emit(newUpdate);
}
return validationResult;
} else {
return await validate(mergedData);
}
}