c44d655e04c104a46887dba544e919da4bf12bdb
[anni] / lib / pleroma / ecto_type / config / atom.ex
1 # Pleroma: A lightweight social networking server
2 # Copyright © 2017-2022 Pleroma Authors <https://pleroma.social/>
3 # SPDX-License-Identifier: AGPL-3.0-only
4
5 defmodule Pleroma.EctoType.Config.Atom do
6   use Ecto.Type
7
8   def type, do: :atom
9
10   def cast(key) when is_atom(key) do
11     {:ok, key}
12   end
13
14   def cast(key) when is_binary(key) do
15     {:ok, Pleroma.ConfigDB.string_to_elixir_types(key)}
16   end
17
18   def cast(_), do: :error
19
20   def load(key) do
21     {:ok, Pleroma.ConfigDB.string_to_elixir_types(key)}
22   end
23
24   def dump(key) when is_atom(key), do: {:ok, inspect(key)}
25   def dump(_), do: :error
26 end