mutate method
Query, modify and update an entry in a single transaction.
The entry with primary key id will be selected and passed through
mutator. The object that is returned by mutator is then updated
on the database.
It is not allowed to change the primary key inside of mutator.
An exception will be thrown otherwise.
Implementation
Future<TDao> mutate(
TPrimaryKey id, FutureOr<TDao> Function(TDao) mutator) async {
return await transaction(
(context) async {
final object = await context.queryId(bean, id);
if (object != null) {
final updated = await mutator(object);
if (updated.getPrimaryKey() != id) {
throw PersistenceException('Mutator modified primary key.');
}
await context.update(updated);
return updated;
} else {
throw PersistenceException('Object with id "$id" not found.');
}
},
);
}