Spear.delete_stream
delete_stream
, go back to Spear module for more information.
Specs
delete_stream( connection :: Spear.Connection.t(), stream_name :: String.t(), opts :: Keyword.t() ) :: :ok | {:error, any()}
Deletes an EventStoreDB stream
EventStoreDB supports two kinds of stream deletions: soft-deletes and
tombstones. By default this function will perform a soft-delete. Pass the
tombstone?: true
option to tombstone the stream.
Soft-deletes make the events in the specified stream no longer accessible
through reads. A scavenge operation will reclaim the disk space taken by
any soft-deleted events. New events may be written to a soft-deleted stream.
When reading soft-deleted streams, :from
options of :start
and :end
will behave as expected, but all events in the stream will have revision
numbers off-set by the number of deleted events.
Tombstoned streams may not be written to ever again. Attempting to write
to a tombstoned stream will fail with a gRPC :failed_precondition
error
iex> [Spear.Event.new("delete_test", %{})] |> Spear.append(conn, "delete_test_0")
:ok
iex> Spear.delete_stream(conn, "delete_test_0", tombstone?: true)
:ok
iex> [Spear.Event.new("delete_test", %{})] |> Spear.append(conn, "delete_test_0")
{:error,
%Spear.Grpc.Response{
data: "",
message: "Event stream 'delete_test_0' is deleted.",
status: :failed_precondition,
status_code: 9
}}
Options
:tombstone?
- (default:false
) controls whether the stream is soft-deleted or tombstoned.:timeout
- (default:5_000
- 5s) the time allowed to block while waiting for the EventStoreDB to delete the stream.:expect
- (default::any
) the expected state of the stream when performing the deleteion. Seeappend/4
andSpear.ExpectationViolation
for more information.:credentials
- (default:nil
) a two-tuple{username, password}
to use as credentials for the request. This option overrides any credentials set in the connection configuration, if present. See the Security guide for more details.
Examples
iex> Spear.append(events, conn, "my_stream")
:ok
iex> Spear.delete_stream(conn, "my_stream")
:ok
iex> Spear.stream!(conn, "my_stream") |> Enum.to_list()
[]