Packages
ex_esdb
0.3.3
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/store_info.ex
defmodule ExESDB.StoreInfo do
@moduledoc """
This module provides functions to get information about the EXESDB event store.
"""
import ExESDB.Khepri.Conditions
def get_streams_raw(store),
do:
store
|> :khepri.fold(
[:streams, if_node_exists(exists: true)],
fn path, props, acc -> acc ++ [{path, props}] end,
[],
%{props_to_return: [:child_list_length]}
)
@doc """
Returns the list of streams in the store.
"""
def get_streams!(store) do
case store
|> get_streams_raw() do
{:ok, streams} ->
streams
|> Stream.map(fn {[:streams, stream_name], %{child_list_length: nbr_of_events}} ->
{stream_name, nbr_of_events}
end)
|> Enum.to_list()
result ->
result
end
end
end