Class: LcpRuby::GroupedQuery::ResultWrapper

Inherits:
Object
  • Object
show all
Defined in:
lib/lcp_ruby/grouped_query/result_wrapper.rb

Class Method Summary collapse

Class Method Details

.wrap(raw_rows, presenter_def, model_def) ⇒ Object



4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
# File 'lib/lcp_ruby/grouped_query/result_wrapper.rb', line 4

def self.wrap(raw_rows, presenter_def, model_def)
  group_by_config = presenter_def.group_by_config
  columns = presenter_def.table_columns
  null_label = I18n.t("lcp_ruby.grouped.null_label", default: "---")

  # Build enum maps for group columns
  enum_maps = build_enum_maps(group_by_config, model_def)

  # Map each raw row to a Row object
  raw_rows.map do |raw|
    values = {}
    group_vals = {}

    columns.each do |col|
      col_name = col["field"]
      raw_value = read_raw_value(raw, col_name)

      if col["aggregate"]
        values[col_name] = raw_value
      else
        # Group column — resolve display value
        source_field = col["group_field"] || col_name
        group_vals[source_field] = raw_value

        if raw_value.nil?
          values[col_name] = null_label
        elsif enum_maps.key?(source_field)
          values[col_name] = enum_maps[source_field][raw_value.to_s] || raw_value
        else
          values[col_name] = raw_value
        end
      end
    end

    Row.new(values, group_values: group_vals)
  end
end