This commit is contained in:
Luiz Rodrigo de Souza 2024-10-31 16:56:02 +00:00 committed by GitHub
commit df8e96c60b
No known key found for this signature in database
GPG key ID: B5690EEEBB952194

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