Current section

Files

Jump to
eventstore lib event_store snapshots snapshotter.ex
Raw

lib/event_store/snapshots/snapshotter.ex

defmodule EventStore.Snapshots.Snapshotter do
@moduledoc """
Record and read snapshots of process state
"""
alias EventStore.Snapshots.SnapshotData
alias EventStore.Storage
@doc """
Read a snapshot, if available, for a given source
"""
def read_snapshot(source_uuid, serializer) do
case Storage.read_snapshot(source_uuid) do
{:ok, snapshot} -> {:ok, SnapshotData.deserialize(snapshot, serializer)}
reply -> reply
end
end
@doc """
Record a snapshot containing data and metadata for a given source
Returns `:ok` on success
"""
def record_snapshot(%SnapshotData{} = snapshot, serializer) do
snapshot
|> SnapshotData.serialize(serializer)
|> Storage.record_snapshot()
end
@doc """
Delete a previously recorded snapshot for a given source
Returns `:ok` on success
"""
def delete_snapshot(source_uuid), do: Storage.delete_snapshot(source_uuid)
end