setItems method
Persists all WriteListOperation.items.
Implementation
@override
Future<WriteListResult<T>> setItems(WriteListOperation<T> operation) async {
if (setItemsHandler == null) {
throw UnimplementedError();
}
late final List<T>? objs;
try {
objs = await setItemsHandler!.call(operation);
} on Exception catch (e) {
_log.severe(e);
return WriteListFailure<T>(
FailureReason.serverError,
'Failed to save ${operation.items}',
);
}
final anyNewItems = operation.items.any(
(item) => bindings.getId(item) == null,
);
if (anyNewItems && objs == null) {
_log.warning(
'Saved new $T objects but no finalized objects were returned; '
'therefore we do not know their Ids',
);
}
return WriteListSuccess(
objs ?? operation.items,
details: operation.details,
);
}