···7788- Support for different subscriptions other than
99 `com.atproto.sync.subscribeRepo'
1010-- Support for multiple instances at once, each with unique consumers (for
1111- listening to multiple subscriptions at once)
1210- Tests
1111+- Documentation
+26
examples/basic_consumer.ex
···11+defmodule BasicConsumer do
22+ @behaviour Drinkup.Consumer
33+44+ def handle_event(%Drinkup.Event.Commit{} = event) do
55+ IO.inspect(event, label: "Got commit event")
66+ end
77+88+ def handle_event(_), do: :noop
99+end
1010+1111+defmodule ExampleSupervisor do
1212+ use Supervisor
1313+1414+ def start_link(arg \\ []) do
1515+ Supervisor.start_link(__MODULE__, arg, name: __MODULE__)
1616+ end
1717+1818+ @impl true
1919+ def init(_) do
2020+ children = [
2121+ {Drinkup, %{consumer: BasicConsumer}}
2222+ ]
2323+2424+ Supervisor.init(children, strategy: :one_for_one)
2525+ end
2626+end
+35
examples/multiple_consumers.ex
···11+defmodule PostDeleteConsumer do
22+ use Drinkup.RecordConsumer, collections: ["app.bsky.feed.post"]
33+44+ def handle_delete(record) do
55+ IO.inspect(record, label: "update")
66+ end
77+end
88+99+defmodule IdentityConsumer do
1010+ @behaviour Drinkup.Consumer
1111+1212+ def handle_event(%Drinkup.Event.Identity{} = event) do
1313+ IO.inspect(event, label: "identity event")
1414+ end
1515+1616+ def handle_event(_), do: :noop
1717+end
1818+1919+defmodule ExampleSupervisor do
2020+ use Supervisor
2121+2222+ def start_link(arg \\ []) do
2323+ Supervisor.start_link(__MODULE__, arg, name: __MODULE__)
2424+ end
2525+2626+ @impl true
2727+ def init(_) do
2828+ children = [
2929+ {Drinkup, %{consumer: PostDeleteConsumer}},
3030+ {Drinkup, %{consumer: IdentityConsumer, name: :identities}}
3131+ ]
3232+3333+ Supervisor.init(children, strategy: :one_for_one)
3434+ end
3535+end
+2-2
examples/record_consumer.ex
···1717defmodule ExampleSupervisor do
1818 use Supervisor
19192020- def start_link(args \\ []) do
2020+ def start_link(arg \\ []) do
2121 Supervisor.start_link(__MODULE__, arg, name: __MODULE__)
2222 end
23232424 @impl true
2525 def init(_) do
2626 children = [
2727- {Drinkup, %{module: ExampleRecordConsumer}}
2727+ {Drinkup, %{consumer: ExampleRecordConsumer}}
2828 ]
29293030 Supervisor.init(children, strategy: :one_for_one)
+8
lib/application.ex
···11+defmodule Drinkup.Application do
22+ use Application
33+44+ def start(_type, _args) do
55+ children = [{Registry, keys: :unique, name: Drinkup.Registry}]
66+ Supervisor.start_link(children, strategy: :one_for_one)
77+ end
88+end