Packages
ex_esdb
0.0.10-alpha
0.11.0
0.10.0
0.9.0
0.8.0
0.7.8
0.7.7
0.7.6
0.7.5
0.7.4
0.7.3
0.7.2
0.7.1
0.7.0
0.6.1
0.6.0
0.5.1
0.5.0
0.4.8
0.4.7
0.4.6
0.4.5
0.4.4
0.4.3
0.4.2
0.4.1
0.4.0
0.3.3
0.3.2
0.3.1
0.3.0
0.2.5
0.2.4
0.2.3
0.2.2
0.2.1
0.2.0
0.1.7
0.1.6
0.1.5
0.1.4
0.1.3
0.1.2
0.1.1
0.1.0
0.0.20
0.0.19
0.0.18
0.0.17
0.0.16
0.0.15
0.0.14-alpha
0.0.13-alpha
0.0.12-alpha
0.0.11-alpha
0.0.10-alpha
0.0.9-alpha
0.0.8-alpha
0.0.6-alpha
0.0.5-alpha
0.0.4-alpha
0.0.3-alpha
0.0.2-alfa
0.0.1-alfa
ExESDB is a reincarnation of rabbitmq/khepri, specialized for use as a BEAM-native event store.
Current section
Files
Jump to
Current section
Files
lib/ex_esdb/snapshots.ex
defmodule ExESDB.Snapshots do
@moduledoc """
Provides functions for working with snapshots
"""
alias ExESDB.Schema.SnapshotRecord, as: SnapshotRecord
@doc """
Delete a snapshot of the current state of the event store.
"""
@spec delete_snapshot(
store :: any,
source_uuid :: any
) :: :ok | {:error, any}
def delete_snapshot(store, source_uuid) do
case store
|> :khepri.delete!([:snapshots, source_uuid]) do
{:ok, _} -> :ok
{:error, reason} -> {:error, reason}
end
end
@doc """
Read a snapshot of the current state of the event store.
"""
@spec read_snapshot(
store :: any,
source_uuid :: any
) :: {:ok, SnapshotRecord.t()} | {:error, any}
def read_snapshot(store, source_uuid) do
case store
|> :khepri.get!([:snapshots, source_uuid]) do
{:ok, snapshot_record} -> {:ok, snapshot_record}
{:error, reason} -> {:error, reason}
end
end
@doc """
Record a snapshot of the current state of the event store.
"""
@spec record_snapshot(
store :: any,
snapshot_record :: any
) :: :ok | {:error, any}
def record_snapshot(store, %{source_uuid: source_uuid} = snapshot_record)
when is_struct(snapshot_record, SnapshotRecord) do
case store
|> :khepri.put!([:snapshots, source_uuid], snapshot_record) do
{:ok, _} -> :ok
{:error, reason} -> {:error, reason}
end
end
end