Class: Collavre::Creatives::TreeBuilder

Inherits:
Object
  • Object
show all
Defined in:
app/services/collavre/creatives/tree_builder.rb

Constant Summary collapse

FILTER_IGNORED_KEYS =
%w[id controller action format level select_mode].freeze

Instance Method Summary collapse

Constructor Details

#initialize(user:, params:, view_context:, expanded_state_map:, select_mode:, max_level:, allowed_creative_ids: nil, progress_map: nil) ⇒ TreeBuilder

Returns a new instance of TreeBuilder.



6
7
8
9
10
11
12
13
14
15
16
# File 'app/services/collavre/creatives/tree_builder.rb', line 6

def initialize(user:, params:, view_context:, expanded_state_map:, select_mode:, max_level:, allowed_creative_ids: nil, progress_map: nil)
  @user = user
  @view_context = view_context
  @raw_params = params.respond_to?(:to_unsafe_h) ? params.to_unsafe_h : params.to_h
  @expanded_state_map = expanded_state_map || {}
  @select_mode = select_mode
  @max_level = max_level
  @allowed_creative_ids = allowed_creative_ids
  @progress_map = progress_map
  @permission_cache = {}
end

Instance Method Details

#build(collection, level: 1) ⇒ Object



18
19
20
21
22
23
24
25
26
# File 'app/services/collavre/creatives/tree_builder.rb', line 18

def build(collection, level: 1)
  return [] if collection.blank?

  creatives = Array(collection)
  # Preload permissions for all creatives in this batch to avoid N+1
  preload_permissions(creatives)

  build_nodes(creatives, level: level)
end