defmodule Money.ExchangeRates.Cache.Ets do @moduledoc """ Money.ExchangeRates.Cache implementation for :ets and :dets """ @behaviour Money.ExchangeRates.Cache @ets_table :exchange_rates require Logger require Money.ExchangeRates.Cache.EtsDets Money.ExchangeRates.Cache.EtsDets.define_common_functions() def init do if :ets.info(@ets_table) == :undefined do :ets.new(@ets_table, [ :named_table, :public, read_concurrency: true ]) else @ets_table end end def terminate do :ok end def get(key) do case :ets.lookup(@ets_table, key) do [{^key, value}] -> value [] -> nil end end def put(key, value) do :ets.insert(@ets_table, {key, value}) value end end