defmodule Nola.Plugins.Link.Store do require Record import Ex2ms @type url() :: String.t() Record.defrecord(:link, link: nil, at: nil) @type link :: record(:link, link: String.t(), at: nil) Record.defrecord(:link_entry, key: nil, at: nil) @type link_entry :: record(:link_entry, key: {url(), String.t()}, at: nil) def setup do :ets.new(:links, [:set, :public, :named_table, keypos: 2]) end @spec insert_link(url()) :: true def insert_link(url) do :ets.insert(:links, link(link: url, at: NaiveDateTime.utc_now() |> NaiveDateTime.to_unix())) end @spec get_link(url()) :: String.t() | nil def get_link(url) do case :ets.lookup(:links, url) do [link] -> link [] -> nil end end end