diff --git a/lib/sql_implementation.ex b/lib/sql_implementation.ex index 509890e..11fd5e0 100644 --- a/lib/sql_implementation.ex +++ b/lib/sql_implementation.ex @@ -168,6 +168,10 @@ defmodule AshSqlite.SqlImplementation do type end + def parameterized_type({:parameterized, _} = type, _, _) do + type + end + def parameterized_type({:in, type}, constraints, no_maps?) do parameterized_type({:array, type}, constraints, no_maps?) end @@ -202,7 +206,7 @@ defmodule AshSqlite.SqlImplementation do end else if is_atom(type) && :erlang.function_exported(type, :type, 1) do - {:parameterized, type, constraints || []} + Ecto.ParameterizedType.init(type, constraints) else type end @@ -314,7 +318,7 @@ defmodule AshSqlite.SqlImplementation do else type = if is_atom(type) && :erlang.function_exported(type, :type, 1) do - {:parameterized, type, []} |> array_to_in() + parameterized_type(type, constraints, true) |> array_to_in() else type |> array_to_in() end @@ -333,9 +337,6 @@ defmodule AshSqlite.SqlImplementation do defp array_to_in({:array, v}), do: {:in, array_to_in(v)} - defp array_to_in({:parameterized, type, constraints}), - do: {:parameterized, array_to_in(type), constraints} - defp array_to_in(v), do: v defp vagueness({:in, type}), do: vagueness(type) diff --git a/lib/types/types.ex b/lib/types/types.ex index 63c5f3e..58cf905 100644 --- a/lib/types/types.ex +++ b/lib/types/types.ex @@ -7,6 +7,10 @@ defmodule AshSqlite.Types do type end + def parameterized_type({:parameterized, _} = type, _) do + type + end + def parameterized_type({:in, type}, constraints) do parameterized_type({:array, type}, constraints) end @@ -40,7 +44,7 @@ defmodule AshSqlite.Types do end else if is_atom(type) && :erlang.function_exported(type, :type, 1) do - {:parameterized, type, constraints || []} + parameterized_type(type, constraints || []) else type end @@ -151,7 +155,7 @@ defmodule AshSqlite.Types do else type = if is_atom(type) && :erlang.function_exported(type, :type, 1) do - {:parameterized, type, []} |> array_to_in() + parameterized_type(type, []) |> array_to_in() else type |> array_to_in() end @@ -170,9 +174,6 @@ defmodule AshSqlite.Types do defp array_to_in({:array, v}), do: {:in, array_to_in(v)} - defp array_to_in({:parameterized, type, constraints}), - do: {:parameterized, array_to_in(type), constraints} - defp array_to_in(v), do: v defp vagueness({:in, type}), do: vagueness(type)