Packages
ferricstore
0.10.2
0.11.14
0.11.12
0.11.11
0.11.10
0.11.9
0.11.8
0.11.7
0.11.6
0.11.5
0.11.4
0.11.3
0.11.2
0.11.1
0.11.0
0.10.3
0.10.2
0.10.1
0.10.0
0.9.1
0.9.0
0.8.0
0.7.5
0.7.4
0.7.3
0.7.2
0.7.1
0.7.0
0.6.0
0.5.7
0.5.6
0.5.5
0.5.4
0.5.3
0.5.2
0.5.1
0.5.0
0.4.3
0.4.2
0.4.1
0.4.0
0.3.7
0.3.6
0.3.5
0.3.4
0.3.3
0.3.2
0.3.1
0.2.0
0.1.0
FerricFlow durable workflows and queues with native-protocol storage, Raft durability, and Bitcask persistence.
Current section
Files
Jump to
Current section
Files
lib/ferricstore/store/ops/delete.ex
defmodule Ferricstore.Store.Ops.Delete do
@moduledoc false
alias Ferricstore.Store.LocalTxStore
alias Ferricstore.Store.Ops.LocalRead
alias Ferricstore.Store.Router
alias Ferricstore.Store.Shard.ETS, as: ShardETS
@spec delete(FerricStore.Instance.t() | LocalTxStore.t() | map(), binary()) :: :ok
def delete(%FerricStore.Instance{} = ctx, key), do: Router.delete(ctx, key)
def delete(%LocalTxStore{} = tx, key) do
if LocalRead.local?(tx, key) do
ShardETS.ets_delete_key(tx.shard_state, key)
LocalRead.tx_drop_pending(key)
LocalRead.tx_mark_deleted(key)
send(self(), {:tx_pending_delete, key})
:ok
else
Router.delete(tx.instance_ctx, key)
end
end
def delete(store, key) when is_map(store), do: store.delete.(key)
end