Packages
ex_esdb
0.4.2
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/umbrella_helper.ex
defmodule ExESDB.UmbrellaHelper do
@moduledoc """
Helper module for starting ExESDB with umbrella configuration patterns.
This module provides functions to start ExESDB with app-specific configurations
when used in umbrella applications.
"""
alias ExESDB.Options
@doc """
Start ExESDB with configuration from a specific OTP app.
This function configures ExESDB to read its configuration from the specified
OTP app instead of the global :ex_esdb application.
## Parameters
* `otp_app` - The OTP application name to read configuration from
## Examples
# In your reckon app's application.ex:
def start(_type, _args) do
children = [
# Other children...
ExESDB.UmbrellaHelper.child_spec(:reckon_accounts)
]
Supervisor.start_link(children, strategy: :one_for_one)
end
"""
def child_spec(otp_app) when is_atom(otp_app) do
config = Options.app_env(otp_app)
enhanced_config = Keyword.put(config, :otp_app, otp_app)
%{
id: {:ex_esdb, otp_app},
start: {ExESDB.System, :start_link, [enhanced_config]},
type: :supervisor
}
end
@doc """
Start ExESDB with configuration from a specific OTP app.
This is a convenience function that directly starts the ExESDB system
with the specified OTP app configuration.
"""
def start_link(otp_app) when is_atom(otp_app) do
config = Options.app_env(otp_app)
enhanced_config = Keyword.put(config, :otp_app, otp_app)
ExESDB.System.start_link(enhanced_config)
end
@doc """
Configure ExESDB to use the specified OTP app for configuration.
This function sets up ExESDB to use app-specific configuration by
setting the :otp_app configuration key.
"""
def configure(otp_app) when is_atom(otp_app) do
Application.put_env(:ex_esdb, :otp_app, otp_app)
end
end