put method

  1. @override
Future<CloudPut> put(
  1. CloudPutRequest request
)
override

Keeps the request's document under its slot in place of the copy at CloudPutRequest.replacing, or only if there is no copy at all when that is null.

Implementation

@override
Future<CloudPut> put(CloudPutRequest request) async {
  _puts.add(request);
  if (unavailable case final String why) return CloudUnavailable(why);
  final kept = _copies[request.slot];
  if (kept?.version != request.replacing) return const CloudMoved();
  final copy = writeElsewhere(request.slot, request.document);
  return CloudStored(version: copy.version);
}