public override async Task <TombstoneResp> Tombstone(TombstoneReq request, ServerCallContext context) { var options = request.Options; var streamName = options.StreamName; var expectedVersion = options.ExpectedStreamRevisionCase switch { TombstoneReq.Types.Options.ExpectedStreamRevisionOneofCase.Revision => new StreamRevision(options.Revision).ToInt64(), TombstoneReq.Types.Options.ExpectedStreamRevisionOneofCase.Any => AnyStreamRevision.Any.ToInt64(), TombstoneReq.Types.Options.ExpectedStreamRevisionOneofCase.NoStream => AnyStreamRevision.NoStream.ToInt64(), TombstoneReq.Types.Options.ExpectedStreamRevisionOneofCase.StreamExists => AnyStreamRevision.StreamExists.ToInt64(), _ => throw new InvalidOperationException() }; var user = context.GetHttpContext().User; var requiresLeader = GetRequiresLeader(context.RequestHeaders); var position = await DeleteInternal(streamName, expectedVersion, user, true, requiresLeader).ConfigureAwait(false); return(position.HasValue ? new TombstoneResp { Position = new TombstoneResp.Types.Position { CommitPosition = position.Value.CommitPosition, PreparePosition = position.Value.PreparePosition } } : new TombstoneResp { NoPosition = new Empty() }); }
private async Task <DeleteResult> TombstoneInternal(TombstoneReq request, UserCredentials userCredentials, CancellationToken cancellationToken) { var result = await _client.TombstoneAsync(request, RequestMetadata.Create(userCredentials), cancellationToken : cancellationToken); return(new DeleteResult(new Position(result.Position.CommitPosition, result.Position.PreparePosition))); }
private async Task <DeleteResult> TombstoneInternal(TombstoneReq request, EventStoreClientOperationOptions operationOptions, UserCredentials userCredentials, CancellationToken cancellationToken) { var result = await _client.TombstoneAsync(request, RequestMetadata.Create(userCredentials), deadline : DeadLine.After(operationOptions.TimeoutAfter), cancellationToken); return(new DeleteResult(new Position(result.Position.CommitPosition, result.Position.PreparePosition))); }
private async Task <DeleteResult> TombstoneInternal(TombstoneReq request, EventStoreClientOperationOptions operationOptions, UserCredentials?userCredentials, CancellationToken cancellationToken) { _log.LogDebug("Tombstoning stream {streamName}.", request.Options.StreamIdentifier); var result = await _client.TombstoneAsync(request, EventStoreCallOptions.Create(Settings, operationOptions, userCredentials, cancellationToken)); return(new DeleteResult(new Position(result.Position.CommitPosition, result.Position.PreparePosition))); }
private async Task <DeleteResult> TombstoneInternal(TombstoneReq request, EventStoreClientOperationOptions operationOptions, UserCredentials?userCredentials, CancellationToken cancellationToken) { _log.LogDebug("Tombstoning stream {streamName}.", request.Options.StreamName); var result = await _client.TombstoneAsync(request, RequestMetadata.Create(userCredentials ?? Settings.DefaultCredentials), deadline : DeadLine.After(operationOptions.TimeoutAfter), cancellationToken); return(new DeleteResult(new Position(result.Position.CommitPosition, result.Position.PreparePosition))); }
public override async Task <TombstoneResp> Tombstone(TombstoneReq request, ServerCallContext context) { var options = request.Options; var streamName = options.StreamName; var expectedVersion = options.ExpectedStreamRevisionCase switch { TombstoneReq.Types.Options.ExpectedStreamRevisionOneofCase.Revision => new StreamRevision(options.Revision).ToInt64(), TombstoneReq.Types.Options.ExpectedStreamRevisionOneofCase.Any => AnyStreamRevision.Any.ToInt64(), TombstoneReq.Types.Options.ExpectedStreamRevisionOneofCase.NoStream => AnyStreamRevision.NoStream.ToInt64(), TombstoneReq.Types.Options.ExpectedStreamRevisionOneofCase.StreamExists => AnyStreamRevision.StreamExists.ToInt64(), _ => throw new InvalidOperationException() }; var requiresLeader = GetRequiresLeader(context.RequestHeaders); var user = context.GetHttpContext().User; var op = DeleteOperation.WithParameter(Plugins.Authorization.Operations.Streams.Parameters.StreamId(streamName)); if (!await _provider.CheckAccessAsync(user, op, context.CancellationToken).ConfigureAwait(false)) { throw AccessDenied(); } var position = await DeleteInternal(streamName, expectedVersion, user, true, requiresLeader, context.CancellationToken).ConfigureAwait(false); return(position.HasValue ? new TombstoneResp { Position = new TombstoneResp.Types.Position { CommitPosition = position.Value.CommitPosition, PreparePosition = position.Value.PreparePosition } } : new TombstoneResp { NoPosition = new Empty() }); }