@@ -10,7 +10,7 @@ defmodule Cereal.Builders.Entity do
1010 |> Map . put ( :data , entity )
1111 |> build ( )
1212 end )
13- |> Enum . map ( fn ( { :ok , result } ) -> result end )
13+ |> Enum . map ( fn { :ok , result } -> result end )
1414 end
1515
1616 def build ( % { serializer: serializer } = context ) do
@@ -23,18 +23,20 @@ defmodule Cereal.Builders.Entity do
2323 id: serializer . id ( context . data , context . conn ) ,
2424 type: serializer . type ( context . data , context . conn ) ,
2525 attributes: attributes ( context ) ,
26- rels: relationships ( context ) ,
26+ rels: relationships ( context )
2727 }
2828 end
2929
3030 # if an assigns/2 function was specified in the serializer - we'll add its
3131 # return value to the conn's assigns
3232 defp do_assigns ( % { serializer: serializer , conn: conn , data: data } = context ) do
3333 conn = Map . put_new ( conn , :assigns , % { } )
34+
3435 conn =
3536 data
3637 |> serializer . assigns ( conn )
3738 |> Enum . reduce ( conn , & do_assign / 2 )
39+
3840 % { context | conn: conn }
3941 end
4042
@@ -58,7 +60,7 @@ defmodule Cereal.Builders.Entity do
5860 relation =
5961 should_include_relation? ( context . opts , name , rel_opts )
6062 |> case do
61- true -> relation ( context , name , rel_opts )
63+ true -> relation ( context , name , rel_opts )
6264 false -> nil
6365 end
6466
@@ -71,6 +73,7 @@ defmodule Cereal.Builders.Entity do
7173 end
7274
7375 defp build_relation_entity ( nil , _ , _ , _ ) , do: nil
76+
7477 defp build_relation_entity ( relation , context , name , rel_opts ) do
7578 context
7679 |> Map . put ( :serializer , rel_opts . serializer )
@@ -81,30 +84,37 @@ defmodule Cereal.Builders.Entity do
8184
8285 defp with_relationship_includes ( % { include: includes } = opts , name ) when is_list ( includes ) ,
8386 do: % { opts | include: includes [ name ] }
87+
8488 defp with_relationship_includes ( opts , _ ) , do: opts
8589
8690 # We include the option when the following is true:
8791 # 1) The relation options have `include: true`
8892 # 2) The `include` option is passed in and includes the resource
8993 defp should_include_relation? ( _ , _ , % { include: true } ) , do: true
94+
9095 defp should_include_relation? ( % { include: included } , name , _ ) when is_list ( included ) ,
9196 do: included [ name ] |> is_list ( )
97+
9298 defp should_include_relation? ( _ , _ , % { include: false } ) , do: false
9399 defp should_include_relation? ( _ , _ , _ ) , do: true
94100
95101 defp filter_attributes ( attrs , % { serializer: serializer , opts: % { fields: fields } } = context ) when is_list ( fields ) do
96102 type = serializer . type ( context . data , context . conn ) |> String . to_atom ( )
97103 do_filter_attributes ( attrs , { :take , fields [ type ] } )
98104 end
105+
99106 defp filter_attributes ( attrs , % { serializer: serializer , opts: % { excludes: fields } } = context ) when is_list ( fields ) do
100107 type = serializer . type ( context . data , context . conn ) |> String . to_atom ( )
101108 do_filter_attributes ( attrs , { :drop , fields [ type ] } )
102109 end
110+
103111 defp filter_attributes ( attrs , _ ) , do: attrs
104112
105113 defp do_filter_attributes ( attrs , { :take , fields } ) when is_list ( fields ) ,
106114 do: Map . take ( attrs , fields )
115+
107116 defp do_filter_attributes ( attrs , { :drop , fields } ) when is_list ( fields ) ,
108117 do: Map . drop ( attrs , fields )
118+
109119 defp do_filter_attributes ( attrs , _ ) , do: attrs
110120end
0 commit comments