reckon_db_streams_reader (reckon_db v1.6.0)

View Source

Streams reader worker for reckon-db

A gen_server that handles read operations for streams. Readers are temporary processes that terminate after a period of inactivity.

Features: - Partitioned by stream_id for concurrent reads from different streams - Idle timeout to free up resources - Registration via pg groups

Summary

Functions

Get or create a reader for a stream

Get all streams in the store

Read events from a stream via a reader worker

Start a reader worker

Types

event/0

-type event() ::
          #event{event_id :: binary(),
                 event_type :: binary(),
                 stream_id :: binary(),
                 version :: non_neg_integer(),
                 data :: map() | binary(),
                 metadata :: map(),
                 tags :: [binary()] | undefined,
                 timestamp :: integer(),
                 epoch_us :: integer(),
                 data_content_type :: binary(),
                 metadata_content_type :: binary()}.

Functions

get_reader(StoreId, StreamId)

-spec get_reader(atom(), binary()) -> pid().

Get or create a reader for a stream

get_streams(StoreId)

-spec get_streams(atom()) -> {ok, [binary()]} | {error, term()}.

Get all streams in the store

read(StoreId, StreamId, StartVersion, Count, Direction)

-spec read(atom(), binary(), non_neg_integer(), pos_integer(), atom()) ->
              {ok, [event()]} | {error, term()}.

Read events from a stream via a reader worker

start_link(_)

-spec start_link({atom(), binary(), non_neg_integer()}) -> {ok, pid()} | {error, term()}.

Start a reader worker