setStreamMetadata method

Future<WriteResult> setStreamMetadata(
  1. StreamState state,
  2. StreamMetadata metadata, {
  3. UserCredentials? userCredentials,
  4. EventStoreClientOperationOptions? operationOptions,
})

Sets the metadata for stream given by state. Returns as WriteResult when the operation has completed. If a concurrent write has occurred, a WrongExpectedVersionResult is returned. Otherwise, WriteSuccessResult is returned.

Implementation

Future<WriteResult> setStreamMetadata(
  StreamState state,
  StreamMetadata metadata, {
  UserCredentials? userCredentials,
  EventStoreClientOperationOptions? operationOptions,
}) {
  return $runRequest<WriteResult>(() async {
    if (!supportsClientStreamingRpc) {
      return WriteNotSupportedResult(
        state,
        'grpc-web does not support client streaming',
      );
    }
    final requests = Stream<AppendReq>.fromIterable([
      state.toAppendMetaReq(),
      _toAppendReq(EventData(
        uuid: UuidV4.newUuid().value.uuid,
        type: SystemEvents.StreamMetadata,
        data: utf8.encode(json.encode(metadata.toJson())),
      )),
    ]);
    final client = await $getClient();
    final result = await client.append(
      requests,
      options: $getOptions(
        userCredentials: userCredentials,
        operationOptions: operationOptions,
      ),
    );
    return WriteResult.from(state, result);
  });
}