delete<_Model extends _RepositoryModel> method
Future<bool>
delete<_Model extends _RepositoryModel>(
- _Model instance, {
- OfflineFirstDeletePolicy policy = OfflineFirstDeletePolicy.optimisticLocal,
- Query? query,
Remove a model from SQLite and the remoteProvider
Implementation
@override
Future<bool> delete<_Model extends _RepositoryModel>(
_Model instance, {
OfflineFirstDeletePolicy policy = OfflineFirstDeletePolicy.optimisticLocal,
Query? query,
}) async {
final withPolicy = applyPolicyToQuery(query, delete: policy);
query = (withPolicy ?? Query()).copyWith(action: QueryAction.delete);
logger.finest('#delete: $query');
final optimisticLocal = policy == OfflineFirstDeletePolicy.optimisticLocal;
final requireRemote = policy == OfflineFirstDeletePolicy.requireRemote;
var rowsDeleted = 0;
if (optimisticLocal) {
rowsDeleted = await _deleteLocal<_Model>(instance, query: query);
}
try {
await remoteProvider.delete<_Model>(instance, query: query, repository: this);
if (requireRemote) {
rowsDeleted = await _deleteLocal<_Model>(instance, query: query);
}
} on ClientException catch (e) {
logger.warning('#delete client failure: $e');
if (requireRemote) rethrow;
} on SocketException catch (e) {
logger.warning('#delete socket failure: $e');
if (requireRemote) rethrow;
}
// ignore: unawaited_futures
if (autoHydrate) hydrate<_Model>(query: query);
return rowsDeleted > 0;
}