Packages
ex_money
6.1.1
6.1.1
6.1.0
6.0.0
6.0.0-rc.0
5.24.2
5.24.1
5.24.0
retired
5.23.0
5.22.0
5.21.0
5.20.0
5.19.2
5.19.1
5.19.0
5.18.0
5.17.2
5.17.1
5.17.0
5.16.1
5.16.0
5.15.4
5.15.3
5.15.2
5.15.1
5.15.0
5.14.1
5.13.0
5.12.4
5.12.3
5.12.2
5.12.1
5.12.0
5.11.0
5.10.0
5.9.0
5.8.0
5.7.4
5.7.3
5.7.2
5.7.1
5.7.0
5.6.0
5.5.5
5.5.4
5.5.3
5.5.2
5.5.1
5.5.0
5.4.1
5.4.0
5.4.0-rc.0
5.3.2
5.3.1
5.3.0
5.2.1
5.2.0
5.1.0
5.0.2
5.0.1
5.0.0
retired
4.4.3
4.4.2
retired
4.4.1
4.4.0
4.3.0
4.2.2
4.2.1
4.2.0
4.1.0
4.0.0
3.4.4
3.4.3
3.4.2
3.4.1
3.4.0
3.3.1
3.3.0
3.2.4
3.2.3
3.2.2
3.2.1
3.2.0
3.1.0
3.0.0
2.12.2
2.12.1
retired
2.12.0
retired
2.11.0
2.10.0
2.9.1
2.9.0
2.8.0
2.7.3
2.7.2
2.7.1
2.7.0
2.6.1
2.6.0
2.5.0
2.4.0
2.3.0
2.2.2
2.2.1
2.2.0
2.1.0
2.1.0-rc.1
retired
2.1.0-rc.0
retired
2.0.4
2.0.3
2.0.2
2.0.1
2.0.0
1.1.3
1.1.2
1.1.1
retired
1.1.0
1.0.0
1.0.0-rc.0
retired
0.9.0
retired
0.8.5
retired
0.8.4
retired
0.8.3
retired
0.8.2
retired
0.8.1
retired
0.8.0
retired
0.7.0
retired
0.6.2
retired
0.6.1
retired
0.6.0
retired
0.5.3
retired
0.5.2
retired
0.5.1
retired
0.5.0
retired
0.4.3
retired
0.4.2
retired
0.4.1
retired
0.4.0
retired
0.3.0
retired
0.2.0
retired
0.1.7
retired
0.1.6
retired
0.1.5
retired
0.1.4
retired
0.1.3
retired
0.1.2
retired
0.1.1
retired
0.1.0
retired
0.0.16
retired
0.0.15
retired
0.0.14
retired
0.0.13
retired
0.0.12
retired
0.0.11
retired
0.0.10
retired
0.0.9
retired
0.0.7
retired
0.0.6
retired
0.0.5
retired
0.0.4
retired
0.0.3
retired
0.0.2
retired
Money functions for operations on and localization of a money data type with support for ISO 4217 currencies and ISO 24165 digial tokens (crypto currencies).
Current section
Files
Jump to
Current section
Files
lib/money/exchange_rates/cache/ets_dets.ex
defmodule Money.ExchangeRates.Cache.EtsDets do
@moduledoc false
# This macro generates several small cache functions shared by the ETS and
# DETS backends. Its cyclomatic complexity is the aggregate of the generated
# clauses, not the complexity of any single function, so the check is disabled
# here.
# credo:disable-for-next-line Credo.Check.Refactor.CyclomaticComplexity
defmacro define_common_functions do
quote do
@impl Money.ExchangeRates.Cache
def latest_rates do
case get(:latest_rates) do
nil ->
{:error, {Money.ExchangeRateError, "No exchange rates were found"}}
rates ->
{:ok, rates}
end
end
@impl Money.ExchangeRates.Cache
def historic_rates(%Date{calendar: Calendar.ISO} = date) do
case get(date) do
nil ->
{:error,
{Money.ExchangeRateError, "No exchange rates for #{Date.to_string(date)} were found"}}
rates ->
{:ok, rates}
end
end
def historic_rates(%{year: year, month: month, day: day}) do
{:ok, date} = Date.new(year, month, day)
historic_rates(date)
end
@impl Money.ExchangeRates.Cache
def last_updated do
case get(:last_updated) do
nil ->
Logger.error("Argument error getting last updated timestamp from ETS table")
{:error, {Money.ExchangeRateError, "Last updated date is not known"}}
last_updated ->
{:ok, last_updated}
end
end
@impl Money.ExchangeRates.Cache
def store_latest_rates(rates, retrieved_at) do
put(:latest_rates, rates)
put(:last_updated, retrieved_at)
end
@impl Money.ExchangeRates.Cache
def store_historic_rates(rates, date) do
put(date, rates)
end
end
end
end