fix: handle new/old ecto parameterized type format

closes #43
This commit is contained in:
Zach Daniel 2024-05-27 12:05:14 -04:00
parent 3cd1de1006
commit 09c6a850f5
2 changed files with 12 additions and 10 deletions

View file

@ -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)

View file

@ -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)