Skip to content

Commit 3919e8a

Browse files
committed
Allow JSON arrays
1 parent 69aa108 commit 3919e8a

File tree

2 files changed

+8
-4
lines changed

2 files changed

+8
-4
lines changed

lib/sqlite_db_connection/protocol.ex

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -165,6 +165,7 @@ defmodule Sqlite.DbConnection.Protocol do
165165
num_rows: num_rows,
166166
columns: atoms_to_strings(column_names),
167167
command: command}}
168+
{:error, :wrong_type} -> {:error, %ArgumentError{message: "Wrong type"}, s}
168169
{:error, {_sqlite_errcode, _message}} = err ->
169170
sqlite_error(err, s)
170171
{:error, %Sqlite.DbConnection.Error{} = err} ->
@@ -218,8 +219,8 @@ defmodule Sqlite.DbConnection.Protocol do
218219
catch
219220
:exit, {:timeout, _gen_server_call} ->
220221
{:error, %Sqlite.DbConnection.Error{message: "Timeout"}}
221-
:exit, _ex ->
222-
{:error, %Sqlite.DbConnection.Error{message: "Disconnected"}}
222+
:exit, ex ->
223+
{:error, %Sqlite.DbConnection.Error{message: inspect(ex)}}
223224
end
224225
end
225226
end

lib/sqlite_ecto/connection.ex

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -66,6 +66,8 @@ if Code.ensure_loaded?(Sqlitex.Server) do
6666
value
6767
%{} = value ->
6868
Ecto.Adapter.json_library().encode!(value)
69+
value when is_list(value) ->
70+
Ecto.Adapter.json_library().encode!(value)
6971
value ->
7072
value
7173
end
@@ -496,7 +498,8 @@ if Code.ensure_loaded?(Sqlitex.Server) do
496498
[@pseudo_returning_statement, cmd, ?\s, fields]
497499
end
498500

499-
defp ecto_to_db({:array, _}) do
501+
defp ecto_to_db({:array, data}) do
502+
require IEx; IEx.pry
500503
raise ArgumentError, "Array type is not supported by SQLite"
501504
end
502505

@@ -772,7 +775,7 @@ if Code.ensure_loaded?(Sqlitex.Server) do
772775
defp column_type(:string, _opts), do: "TEXT"
773776
defp column_type(:map, _opts), do: "TEXT"
774777
defp column_type({:map, _}, _opts), do: "TEXT"
775-
defp column_type({:array, _}, _opts), do: raise(ArgumentError, "Array type is not supported by SQLite")
778+
defp column_type({:array, :map}, _opts), do: "TEXT"
776779
defp column_type(:decimal, opts) do
777780
# We only store precision and scale for DECIMAL.
778781
precision = Keyword.get(opts, :precision)

0 commit comments

Comments
 (0)