commanded / eventstore

Event store using PostgreSQL for persistence
MIT License
1.04k stars 142 forks source link

Paginate streams #246

Closed slashdotdash closed 2 years ago

slashdotdash commented 2 years ago

Allow pagination of all streams.

Examples

iex> {:ok, page} = MyEventStore.paginate_streams(search: "example-stream", sort_by: :stream_uuid, sort_dir: :asc)

{:ok,
 %EventStore.Page{
   entries: [
     %EventStore.Streams.StreamInfo{
       created_at: ~U[2021-12-17 10:49:40.197674Z],
       deleted_at: nil,
       status: :created,
       stream_id: 10,
       stream_uuid: "example-stream",
       stream_version: 10
     }
   ],
   page_number: 1,
   page_size: 50,
   total_entries: 1,
   total_pages: 1
 }}

iex> {:ok, page} = MyEventStore.paginate_streams(page_size: 5, page_number: 2)
{:ok,
 %EventStore.Page{
   entries: [
     %EventStore.Streams.StreamInfo{
       created_at: ~U[2021-12-17 10:49:40.176078Z],
       deleted_at: nil,
       status: :created,
       stream_id: 5,
       stream_uuid: "stream-5",
       stream_version: 10
     },
     %EventStore.Streams.StreamInfo{
       created_at: ~U[2021-12-17 10:49:40.180466Z],
       deleted_at: nil,
       status: :created,
       stream_id: 6,
       stream_uuid: "stream-6",
       stream_version: 10
     },
     %EventStore.Streams.StreamInfo{
       created_at: ~U[2021-12-17 10:49:40.184644Z],
       deleted_at: nil,
       status: :created,
       stream_id: 7,
       stream_uuid: "stream-7",
       stream_version: 10
     },
     %EventStore.Streams.StreamInfo{
       created_at: ~U[2021-12-17 10:49:40.188254Z],
       deleted_at: nil,
       status: :created,
       stream_id: 8,
       stream_uuid: "stream-8",
       stream_version: 10
     },
     %EventStore.Streams.StreamInfo{
       created_at: ~U[2021-12-17 10:49:40.193511Z],
       deleted_at: nil,
       status: :created,
       stream_id: 9,
       stream_uuid: "stream-9",
       stream_version: 10
     }
   ],
   page_number: 2,
   page_size: 5,
   total_entries: 12,
   total_pages: 3
 }}