Skip to content

Commit 6d557cf

Browse files
committed
Manually convert date/time structs to BSON.DateTime
1 parent 88df67e commit 6d557cf

2 files changed

Lines changed: 8 additions & 5 deletions

File tree

lib/mongo_ecto.ex

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -426,8 +426,7 @@ defmodule Mongo.Ecto do
426426
end
427427

428428
@doc false
429-
def loaders(Ecto.Time, type), do: [&load_time/1, type]
430-
def loaders(Ecto.Date, type), do: [&load_date/1, type]
429+
def loaders(:time, type), do: [&load_time/1, type]
431430
def loaders(:date, type), do: [&load_date/1, type]
432431
def loaders(:datetime, type), do: [&load_datetime/1, type]
433432
def loaders(:binary_id, type), do: [&load_objectid/1, type]
@@ -436,7 +435,7 @@ defmodule Mongo.Ecto do
436435
def loaders(_base, type), do: [type]
437436

438437
defp load_time(%BSON.DateTime{} = time) do
439-
{{_, _, _}, time} = BSON.DateTime.to_datetime(time)
438+
{{_,_,_}, time} = BSON.DateTime.to_datetime(time)
440439
{:ok, time}
441440
end
442441
defp load_time(_),
@@ -446,8 +445,6 @@ defmodule Mongo.Ecto do
446445
{date, {_, _, _, _}} = BSON.DateTime.to_datetime(date)
447446
{:ok, date}
448447
end
449-
defp load_date(%Ecto.Date{} = date),
450-
do: Ecto.Date.to_erl(date)
451448
defp load_date(_),
452449
do: :error
453450

lib/mongo_ecto/conversions.ex

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -54,6 +54,12 @@ defmodule Mongo.Ecto.Conversions do
5454
do: map(list, &from_ecto_pk(&1, pk))
5555
def from_ecto_pk(value, _pk) when is_literal(value),
5656
do: {:ok, value}
57+
def from_ecto_pk({{_,_,_},{_,_,_,_}} = value, _pk),
58+
do: Ecto.Type.adapter_dump(Mongo.Ecto, :datetime, value)
59+
def from_ecto_pk({_,_,_} = value, _pk),
60+
do: Ecto.Type.adapter_dump(Mongo.Ecto, :date, value)
61+
def from_ecto_pk({_,_,_,_} = value, _pk),
62+
do: Ecto.Type.adapter_dump(Mongo.Ecto, :time, value)
5763
def from_ecto_pk(_value, _pk),
5864
do: :error
5965

0 commit comments

Comments
 (0)