deleteAllExcept<_Model extends T> method
The convenient inverse of deleteAll. query
defines the instances that should not
be deleted. Return value reflects if the operation completed without any failures.
It is strongly recommended to use Equatable or to override the ==
operator in
your app's models when incorporating this method. A delta between models to keep and
models to remove is computed with ==
.
Implementation
Future<bool> deleteAllExcept<_Model extends T>({required Query query}) async {
final allModels = await get<_Model>();
final modelsToKeep = await get<_Model>(query: query);
final modelsToDelete = allModels.where((m) => !modelsToKeep.contains(m));
var allDeletesSuccessful = true;
for (final model in modelsToDelete) {
final didDelete = await delete<_Model>(model, query: query);
if (!didDelete) allDeletesSuccessful = false;
}
return allDeletesSuccessful;
}