@@ -3,7 +3,6 @@ defmodule Indexed.Actions.Warm do
33 import Indexed.Helpers , only: [ add_to_lookup: 4 , id: 2 ]
44 alias Indexed . { Entity , UniquesBundle }
55 alias __MODULE__
6- require Logger
76
87 defstruct [ :data_tuple , :entity_name , :id_key , :index_ref ]
98
@@ -55,9 +54,10 @@ defmodule Indexed.Actions.Warm do
5554 as keys and keyword lists of options are values. Allowed options are as
5655 follows:
5756
58- * `:fields` - List of field name atoms to index by. At least one required.
57+ * `:fields` - List of field name atoms to index by.
5958 * If field is a DateTime, use sort: `{:my_field, sort: :datetime}`.
6059 * Ascending and descending will be indexed for each field.
60+ * If none, sorted results will not be available.
6161 * `:id_key` - Primary key to use in indexes and for accessing the records of
6262 this entity. See `t:Indexed.Entity.t/0`. Default: `:id`.
6363 * `:lookups` - See `t:Indexed.Entity.t/0`.
@@ -145,13 +145,11 @@ defmodule Indexed.Actions.Warm do
145145 index_ref: index . index_ref
146146 }
147147
148- Logger . debug ( "Warming #{ entity_name } ..." )
149-
150148 # Create and insert the caches for this entity: for each prefilter
151149 # configured, build & store indexes for each indexed field.
152- # Internally, a `t:prefilter/0` refers to a `{:my_field, "possible
153- # value"}` tuple or `nil` which we implicitly include, where no
154- # prefilter is applied.
150+ # Internally, a `t:prefilter/0` refers to a `{:my_field, "some value"}`
151+ # tuple or `nil` which we implicitly include,
152+ # where no prefilter is applied.
155153 for prefilter_config <- entity . prefilters ,
156154 do: warm_prefilter ( warm , prefilter_config , entity . fields )
157155
@@ -190,11 +188,6 @@ defmodule Indexed.Actions.Warm do
190188 warm_sorted ( warm , prefilter , field , data_tuple )
191189 end
192190
193- Logger . debug ( """
194- * Putting index (PF #{ pf_key || "nil" } ) for \
195- #{ inspect ( Enum . map ( fields , & elem ( & 1 , 0 ) ) ) } \
196- """ )
197-
198191 if nil == pf_key do
199192 Enum . each ( fields , & warm_sorted . ( nil , & 1 , full_data ) )
200193
@@ -216,8 +209,6 @@ defmodule Indexed.Actions.Warm do
216209 bundle = UniquesBundle . new ( counts_map , Enum . sort ( Enum . uniq ( list ) ) )
217210 UniquesBundle . put ( bundle , index_ref , entity_name , nil , pf_key , new?: true )
218211
219- Logger . debug ( "--> Putting UB (for #{ pf_key } ) with #{ map_size ( counts_map ) } elements." )
220-
221212 # For each value found for the prefilter, create a set of indexes.
222213 Enum . each ( grouped , fn { pf_val , data } ->
223214 prefilter = { pf_key , pf_val }
@@ -276,21 +267,14 @@ defmodule Indexed.Actions.Warm do
276267 list = counts_map |> Map . keys ( ) |> Enum . sort ( )
277268 bundle = UniquesBundle . new ( counts_map , list )
278269
279- Logger . debug ( """
280- --> Putting UB (PF #{ inspect ( prefilter ) } , #{ field_name } ) \
281- with #{ map_size ( counts_map ) } elements."\
282- """ )
283-
284270 UniquesBundle . put ( bundle , index_ref , entity_name , prefilter , field_name , new?: true )
285271 end )
286272 end
287273
288274 @ doc "Normalize fields."
289- @ spec resolve_fields_opt ( [ atom | Entity . field ( ) ] , atom ) :: [ Entity . field ( ) ]
275+ @ spec resolve_fields_opt ( [ atom | Entity . field ( ) ] | nil , atom ) :: [ Entity . field ( ) ]
290276 def resolve_fields_opt ( fields , _entity_name ) do
291- # match?([_ | _], fields) || raise "At least one field to index is required on #{entity_name}."
292-
293- Enum . map ( fields , fn
277+ Enum . map ( List . wrap ( fields ) , fn
294278 { _name , _opts } = f -> f
295279 name when is_atom ( name ) -> { name , [ ] }
296280 end )
0 commit comments