read from column_type besides type for better supporting belongs_to

This commit is contained in:
Luiz Rodrigo de Souza 2024-10-31 14:11:18 -03:00
parent 5f45fe9306
commit 031e1e802b
No known key found for this signature in database
GPG key ID: CC04E6B508D9B723

View file

@ -95,22 +95,43 @@ if Code.ensure_loaded?(Ecto.ParameterizedType) do
def load(_, _, _), do: :error
defp validate_type!(type) do
unless type in ~w[string uuid]a do
raise ArgumentError, "`type` must be `:string` or `:uuid`"
end
type
end
defp get_type(opts) do
default_type = Application.get_env(:typeid_elixir, :default_type, :string)
case Keyword.get(opts, :column_type) do
nil ->
opts
|> Keyword.get(:type, default_type)
|> case do
TypeID -> default_type
type -> type
end
|> validate_type!()
type ->
validate_type!(type)
end
end
defp validate_opts!(opts) do
primary_key = Keyword.get(opts, :primary_key, false)
schema = Keyword.fetch!(opts, :schema)
field = Keyword.fetch!(opts, :field)
default_type = Application.get_env(:typeid_elixir, :default_type, :string)
type = Keyword.get(opts, :type, default_type)
prefix = Keyword.get(opts, :prefix)
type = get_type(opts)
if primary_key do
TypeID.validate_prefix!(prefix)
end
unless type in ~w[string uuid]a do
raise ArgumentError, "`type` must be `:string` or `:uuid`"
end
if primary_key do
%{primary_key: primary_key, schema: schema, field: field, prefix: prefix, type: type}
else