@@ -41,7 +41,7 @@ defmodule Params do
4141 Recursively traverses and transforms embedded changesets and skips keys that
4242 was not part of params given to changeset
4343 """
44- @ spec to_map ( Changeset . t ) :: map
44+ @ spec to_map ( Changeset . t ( ) ) :: map
4545 def to_map ( % Changeset { data: % { __struct__: module } } = ch ) do
4646 ecto_defaults = module |> plain_defaults_defined_by_ecto_schema
4747 params_defaults = module |> schema |> defaults
@@ -72,13 +72,14 @@ defmodule Params do
7272 data.login # => "foo"
7373 ```
7474 """
75- @ spec data ( Changeset . t ) :: struct
75+ @ spec data ( Changeset . t ( ) ) :: struct
7676 def data ( % Changeset { data: data = % { __struct__: module } } = ch ) do
7777 default_embeds = default_embeds_from_schema ( module )
7878
79- default = Enum . reduce ( default_embeds , data , fn { k , v } , m ->
80- Map . put ( m , k , Map . get ( m , k ) || v )
81- end )
79+ default =
80+ Enum . reduce ( default_embeds , data , fn { k , v } , m ->
81+ Map . put ( m , k , Map . get ( m , k ) || v )
82+ end )
8283
8384 Enum . reduce ( ch . changes , default , fn { k , v } , m ->
8485 case v do
@@ -103,12 +104,14 @@ defmodule Params do
103104 end
104105
105106 case schema ( module ) do
106- nil -> % { }
107+ nil ->
108+ % { }
109+
107110 schema ->
108111 schema
109112 |> Stream . filter ( is_embed_default )
110113 |> Stream . map ( default_embed )
111- |> Enum . into ( struct ( module ) |> Map . from_struct )
114+ |> Enum . into ( struct ( module ) |> Map . from_struct ( ) )
112115 end
113116 end
114117
@@ -143,7 +146,7 @@ defmodule Params do
143146 changeset
144147 |> Changeset . cast ( params , required ++ optional )
145148 |> Changeset . validate_required ( required )
146- |> cast_relations ( required_relations , [ required: true ] )
149+ |> cast_relations ( required_relations , required: true )
147150 |> cast_relations ( optional_relations , [ ] )
148151 end
149152
@@ -158,22 +161,23 @@ defmodule Params do
158161 end
159162
160163 defp change ( % { __struct__: _ } = model ) do
161- model |> Changeset . change
164+ model |> Changeset . change ( )
162165 end
163166
164167 defp change ( module ) when is_atom ( module ) do
165- module |> struct |> Changeset . change
168+ module |> struct |> Changeset . change ( )
166169 end
167170
168171 defp relation_partition ( module , names ) do
169- types = module . __changeset__
172+ types = module . __changeset__ ( )
170173
171174 names
172175 |> Stream . map ( fn x -> String . to_atom ( "#{ x } " ) end )
173176 |> Enum . reduce ( { [ ] , [ ] } , fn name , { fields , relations } ->
174177 case Map . get ( types , name ) do
175178 { type , _ } when type in @ relations ->
176179 { fields , [ { name , type } | relations ] }
180+
177181 _ ->
178182 { [ name | fields ] , relations }
179183 end
@@ -194,33 +198,39 @@ defmodule Params do
194198 defp deep_merge_conflict ( _k , % { } = m1 , % { } = m2 ) do
195199 deep_merge ( m1 , m2 )
196200 end
201+
197202 defp deep_merge_conflict ( _k , _v1 , v2 ) , do: v2
198203
199204 defp defaults ( params ) , do: defaults ( params , % { } , [ ] )
200205 defp defaults ( params , acc , path )
201206 defp defaults ( [ ] , acc , _path ) , do: acc
202207 defp defaults ( nil , _acc , _path ) , do: % { }
208+
203209 defp defaults ( [ opts | rest ] , acc , path ) when is_list ( opts ) do
204210 defaults ( [ Enum . into ( opts , % { } ) | rest ] , acc , path )
205211 end
212+
206213 defp defaults ( [ % { name: name , embeds: embeds } | rest ] , acc , path ) do
207214 acc = defaults ( embeds , acc , [ name | path ] )
208215 defaults ( rest , acc , path )
209216 end
217+
210218 defp defaults ( [ % { name: name , default: value } | rest ] , acc , path ) do
211- funs = [ name | path ]
212- |> Enum . reverse
213- |> Enum . map ( fn nested_name ->
214- fn :get_and_update , data , next ->
215- with { nil , inner_data } <- next . ( data [ nested_name ] || % { } ) ,
216- data = Map . put ( data , nested_name , inner_data ) ,
217- do: { nil , data }
218- end
219- end )
219+ funs =
220+ [ name | path ]
221+ |> Enum . reverse ( )
222+ |> Enum . map ( fn nested_name ->
223+ fn :get_and_update , data , next ->
224+ with { nil , inner_data } <- next . ( data [ nested_name ] || % { } ) ,
225+ data = Map . put ( data , nested_name , inner_data ) ,
226+ do: { nil , data }
227+ end
228+ end )
220229
221230 acc = put_in ( acc , funs , value )
222231 defaults ( rest , acc , path )
223232 end
233+
224234 defp defaults ( [ % { } | rest ] , acc , path ) do
225235 defaults ( rest , acc , path )
226236 end
@@ -238,7 +248,7 @@ defmodule Params do
238248 defp plain_defaults_defined_by_ecto_schema ( module ) do
239249 module
240250 |> struct
241- |> Map . from_struct
251+ |> Map . from_struct ( )
242252 |> Map . delete ( :__meta__ )
243253 |> Enum . reject ( fn { _ , v } -> is_nil ( v ) end )
244254 |> Enum . into ( % { } )
0 commit comments