File tree 3 files changed +40
-0
lines changed
test/ecto/adapters/sqlite3
3 files changed +40
-0
lines changed Original file line number Diff line number Diff line change @@ -239,6 +239,11 @@ defmodule Ecto.Adapters.SQLite3 do
239
239
[ & Codec . naive_datetime_decode / 1 , type ]
240
240
end
241
241
242
+ @ impl Ecto.Adapter
243
+ def loaders ( :time , type ) do
244
+ [ & Codec . time_decode / 1 , type ]
245
+ end
246
+
242
247
@ impl Ecto.Adapter
243
248
def loaders ( :utc_datetime_usec , type ) do
244
249
[ & Codec . utc_datetime_decode / 1 , type ]
Original file line number Diff line number Diff line change @@ -72,6 +72,15 @@ defmodule Ecto.Adapters.SQLite3.Codec do
72
72
end
73
73
end
74
74
75
+ def time_decode ( nil ) , do: { :ok , nil }
76
+
77
+ def time_decode ( value ) do
78
+ case Time . from_iso8601 ( value ) do
79
+ { :ok , _time } = result -> result
80
+ { :error , _ } -> :error
81
+ end
82
+ end
83
+
75
84
def json_encode ( value ) do
76
85
Application . get_env ( :ecto_sqlite3 , :json_library , Jason ) . encode ( value )
77
86
end
Original file line number Diff line number Diff line change @@ -81,6 +81,32 @@ defmodule Ecto.Adapters.SQLite3.CodecTest do
81
81
end
82
82
end
83
83
84
+ describe ".time_decode/1" do
85
+ test "nil" do
86
+ { :ok , nil } = Codec . time_decode ( nil )
87
+ end
88
+
89
+ test "string" do
90
+ { :ok , time } = Time . from_iso8601 ( "23:50:07" )
91
+ assert { :ok , ^ time } = Codec . time_decode ( "23:50:07" )
92
+
93
+ { :ok , time } = Time . from_iso8601 ( "23:50:07Z" )
94
+ assert { :ok , ^ time } = Codec . time_decode ( "23:50:07Z" )
95
+
96
+ { :ok , time } = Time . from_iso8601 ( "T23:50:07Z" )
97
+ assert { :ok , ^ time } = Codec . time_decode ( "T23:50:07Z" )
98
+
99
+ { :ok , time } = Time . from_iso8601 ( "23:50:07,0123456" )
100
+ assert { :ok , ^ time } = Codec . time_decode ( "23:50:07,0123456" )
101
+
102
+ { :ok , time } = Time . from_iso8601 ( "23:50:07.0123456" )
103
+ assert { :ok , ^ time } = Codec . time_decode ( "23:50:07.0123456" )
104
+
105
+ { :ok , time } = Time . from_iso8601 ( "23:50:07.123Z" )
106
+ assert { :ok , ^ time } = Codec . time_decode ( "23:50:07.123Z" )
107
+ end
108
+ end
109
+
84
110
describe ".utc_datetime_decode/1" do
85
111
test "nil" do
86
112
assert { :ok , nil } = Codec . utc_datetime_decode ( nil )
You can’t perform that action at this time.
0 commit comments