summaryrefslogtreecommitdiff
path: root/lib/plugins/link/store.ex
blob: 566cc9a66451f0d02b20fe7b630629aacfa4779b (plain) (blame)
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