Packages
krug
1.0.5
2.0.36
2.0.35
2.0.34
2.0.33
2.0.32
2.0.31
2.0.30
2.0.29
2.0.27
2.0.26
2.0.25
2.0.24
2.0.23
2.0.22
2.0.20
2.0.19
2.0.18
2.0.17
2.0.16
2.0.15
2.0.14
2.0.13
2.0.12
2.0.11
2.0.10
2.0.9
2.0.8
2.0.7
2.0.6
2.0.5
2.0.4
2.0.1
2.0.0
1.1.53
1.1.52
1.1.50
1.1.49
1.1.48
1.1.47
1.1.46
1.1.45
1.1.44
1.1.43
1.1.42
1.1.41
1.1.40
1.1.39
1.1.38
1.1.37
1.1.36
1.1.35
1.1.34
1.1.33
1.1.32
1.1.31
1.1.30
1.1.29
1.1.28
1.1.27
1.1.26
1.1.25
1.1.24
1.1.23
1.1.22
1.1.21
1.1.20
1.1.19
1.1.18
1.1.17
1.1.16
1.1.15
1.1.14
1.1.12
1.1.10
1.1.9
1.1.8
1.1.7
1.1.6
1.1.5
1.1.4
1.1.3
1.1.2
1.1.1
1.1.0
1.0.9
1.0.8
1.0.7
1.0.6
1.0.5
1.0.4
1.0.3
1.0.2
1.0.1
1.0.0
0.5.5
0.5.4
0.5.3
0.5.2
0.5.1
0.5.0
0.4.31
0.4.30
0.4.29
0.4.28
0.4.27
0.4.26
0.4.25
0.4.24
0.4.23
0.4.22
0.4.20
0.4.19
0.4.18
0.4.17
0.4.16
0.4.15
0.4.14
0.4.13
0.4.12
0.4.11
0.4.10
0.4.9
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.9
0.3.8
0.3.7
0.3.6
0.3.5
0.3.4
0.3.3
0.3.2
0.3.1
0.3.0
0.2.1
0.2.0
0.1.0
A Utilitary package functionalities modules for improve a secure performatic development.
Current section
Files
Jump to
Current section
Files
lib/krug/ecto/enviroment.reader.ex
defmodule Krug.EnviromentReader do
@moduledoc """
Provides a mechanism to simplificate the Ecto db configuration on build time.
Should be used whit a module that implements ```Krug.EctoEnviromentDecisor``` behavior
and other module that implements ```Krug.EctoEnviroment``` behavior.
Utilization Example:
```elixir
defmodule MyApp.Enviroment.Reader do
use Krug.EnviromentReader, decisor: MyApp.EnviromentDecisor, enviroment: MyApp.Enviroment
end
```
After maked this, we could use it to configure a Ecto Repo
```elixir
defmodule MyApp.App.Repo do
use Ecto.Repo, otp_app: :ex_app, adapter: Ecto.Adapters.MyXQL
alias MyApp.Enviroment.Reader
def init(_type, config) do
config = Keyword.put(config, :hostname, Reader.read_key_value("APPDB_HOST"))
config = Keyword.put(config, :port, String.to_integer(Reader.read_key_value("APPDB_PORT")))
config = Keyword.put(config, :database, Reader.read_key_value("APPDB_DATABASE"))
config = Keyword.put(config, :username, Reader.read_key_value("APPDB_USERNAME"))
config = Keyword.put(config, :password, Reader.read_key_value("APPDB_PASSWORD"))
config = Keyword.put(config, :pool_size, 10)
config = Keyword.put(config, :timeout, 60_000)
config = Keyword.put(config, :ownership_timeout, 60_000)
config = Keyword.put(config, :queue_target, 500)
config = Keyword.put(config, :queue_interval, 10_000)
{:ok, config}
end
end
```
"""
@moduledoc since: "0.2.1"
defmacro __using__(opts) do
quote bind_quoted: [opts: opts] do
@decisor Keyword.get(opts,:decisor)
@enviroment Keyword.get(opts,:enviroment)
alias Krug.StructUtil
def read_key_value(key) do
list = @decisor.get_enviroment_type() |> @enviroment.get_enviroment()
StructUtil.get_key_par_value_from_list(key,list)
end
end
end
end