An Ecto SQLite3 adapter.
0

Configure Feed

Select the types of activity you want to include in your feed.

Make decode function behave similar to myxql

I personally believe this is incorrect to handle decode / encode this
way, but upstream in myxql and postgrex this is how it is handled.
Rather than fight that issue, I will instead make it behave similarly.

Fixes #158

Matthew Johnston (Dec 21, 2024, 9:53 PM -0600) 90f6b8b2 9b03747c

+5 -9
+5 -9
lib/ecto/adapters/sqlite3/codec.ex
··· 1 1 defmodule Ecto.Adapters.SQLite3.Codec do 2 2 @moduledoc false 3 3 4 - def bool_decode(nil), do: {:ok, nil} 5 4 def bool_decode(0), do: {:ok, false} 6 5 def bool_decode("0"), do: {:ok, false} 7 6 def bool_decode("FALSE"), do: {:ok, false} 8 7 def bool_decode(1), do: {:ok, true} 9 8 def bool_decode("1"), do: {:ok, true} 10 9 def bool_decode("TRUE"), do: {:ok, true} 11 - def bool_decode(_), do: :error 10 + def bool_decode(v), do: {:ok, v} 12 11 13 - def json_decode(nil), do: {:ok, nil} 14 - 15 - def json_decode(x) when is_binary(x) do 16 - Application.get_env(:ecto_sqlite3, :json_library, Jason).decode(x) 12 + def json_decode(v) when is_binary(v) do 13 + Application.get_env(:ecto_sqlite3, :json_library, Jason).decode(v) 17 14 end 18 15 19 - def json_decode(_), do: :error 16 + def json_decode(v), do: {:ok, v} 20 17 21 - def float_decode(nil), do: {:ok, nil} 22 18 def float_decode(%Decimal{} = decimal), do: {:ok, Decimal.to_float(decimal)} 23 19 def float_decode(x) when is_integer(x), do: {:ok, x / 1} 24 - def float_decode(_), do: :error 20 + def float_decode(x), do: {:ok, x} 25 21 26 22 def decimal_decode(nil), do: {:ok, nil} 27 23