4aad0cfcefbabd588c91ff4c633e77bb7d5c079c
[anni] / lib / pleroma / ecto_type / config / binary_value.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.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