diff options
Diffstat (limited to '')
-rw-r--r-- | lib/plugins/link/store.ex | 30 |
1 files changed, 30 insertions, 0 deletions
diff --git a/lib/plugins/link/store.ex b/lib/plugins/link/store.ex new file mode 100644 index 0000000..566cc9a --- /dev/null +++ b/lib/plugins/link/store.ex @@ -0,0 +1,30 @@ +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 |