Packages
ex_esdb
0.4.3
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/app.ex
defmodule ExESDB.App do
@moduledoc """
This module is used to start the ExESDB system.
"""
use Application,
otp_app: :ex_esdb
alias ExESDB.Options, as: Options
alias ExESDB.Themes, as: Themes
require Logger
require Phoenix.PubSub
@impl true
def start(_type, _args) do
# Support umbrella configuration patterns
# Check if there's an :otp_app in the application environment
otp_app = Application.get_env(:ex_esdb, :otp_app, :ex_esdb)
# Set the context for configuration access
Options.set_context(otp_app)
config = Options.app_env(otp_app)
store_id = config[:store_id]
Logger.warning("Attempting to start ExESDB with options: #{inspect(config, pretty: true)}")
Logger.warning("Using configuration from OTP app: #{inspect(otp_app)}")
# Pass the otp_app to the system configuration
enhanced_config = Keyword.put(config, :otp_app, otp_app)
children = [
# {ExESDB.System, enhanced_config}
]
opts = [strategy: :one_for_one, name: ExESDB.Supervisor]
res = Supervisor.start_link(children, opts)
IO.puts("#{Themes.app(self(), "is UP for store #{inspect(store_id)}")}")
res
end
@impl true
def stop(state) do
# ExESDB.System.stop(:normal)
Logger.warning("STOPPING APP #{inspect(state, pretty: true)}")
end
end