Popularity
6.0
Declining
Activity
0.0
Stable
75
5
12

Description

Bourne provides more powerful streaming mechanisms than those offered by Ecto or Tributary. Notably, it provides both cursor and keyset pagination methods, as well as the ability to create a GenStage producer with similar semantics to GenStage.from_enumerable.

Monthly Downloads: 1,849
Programming language: Elixir
License: The Unlicense
Tags: ORM And Datamapping     Ecto     Streaming    
Latest version: v1.1.0

Bourne alternatives and similar packages

Based on the "ORM and Datamapping" category.
Alternatively, view Bourne alternatives based on common mentions on social networks and blogs.

Do you think we are missing an alternative of Bourne or a related project?

Add another 'ORM and Datamapping' Package

README

Bourne

Continuous Integration Code Coverage Documentation Package

Bourne provides more powerful streaming mechanisms than those offered by Ecto or Tributary. Notably, it provides both cursor and keyset pagination methods, as well as the ability to create a GenStage producer with similar semantics to GenStage.from_enumerable.

Example

defmodule My.Repo do
  use Ecto.Repo, otp_app: :mine
  use Bourne
end

import Ecto.Query
q = from(actor in Actor, where: actor.born <= 1980)

# You can stream through an `Enumerable`:
My.Repo.stream(q) |> Stream.each(&IO.inspect) |> Stream.run

# Alternatively, you can stream through a GenStage producer:
defmodule InspectorConsumer do
  use GenStage

  def start_link do
    GenStage.start_link(InspectorConsumer, [])
  end

  def init([]) do
    {:consumer, :ok}
  end

  def handle_events(rows, _from, state) do
    Enum.each(rows, &IO.inspect/1)
    {:noreply, [], state}
  end
end

method = Enum.take_random(~W{cursor keyset}a, 1)
{:ok, producer} = My.Repo.streamer(q, method: method)
{:ok, consumer} = InspectorConsumer.start_link
GenStage.sync_subscribe(consumer, to: producer)

Installation

  1. Add bourne to your list of dependencies in mix.exs:
  def deps do
    [{:bourne, "~> 1.0"}]
  end
  1. Fetch and compile your new dependency:
  mix do deps.get bourne, deps.compile
  1. Drink your :tea:

  2. That's it!

Usage

Refer to the documentation.

License

Bourne is free and unencumbered software released into the public domain, with fallback provisions for jurisdictions that don't recognize the public domain.

For details, see LICENSE.md.


*Note that all licence references and agreements mentioned in the Bourne README section above are relevant to that project's source code only.