summaryrefslogtreecommitdiff
path: root/lib/plugins/link/store.ex
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--lib/plugins/link/store.ex30
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