1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
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
|