Merge branch 'develop' of git.pleroma.social:pleroma/pleroma into update-validator
[akkoma] / lib / pleroma / ecto_type / config / binary_value.ex
1 # Pleroma: A lightweight social networking server
2 # Copyright © 2017-2020 Pleroma Authors <https://pleroma.social/>
3 # SPDX-License-Identifier: AGPL-3.0-only
4
5 defmodule Pleroma.EctoType.Config.BinaryValue do
6 use Ecto.Type
7
8 def type, do: :term
9
10 def cast(value) when is_binary(value) do
11 if String.valid?(value) do
12 {:ok, value}
13 else
14 {:ok, :erlang.binary_to_term(value)}
15 end
16 end
17
18 def cast(value), do: {:ok, value}
19
20 def load(value) when is_binary(value) do
21 {:ok, :erlang.binary_to_term(value)}
22 end
23
24 def dump(value) do
25 {:ok, :erlang.term_to_binary(value)}
26 end
27 end