Class: Prato::Internal::Specification

Inherits:
Object
  • Object
show all
Defined in:
lib/prato/internal/specification.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(columns:, visible_fields:, filterable_fields:, sortable_fields:, output_paths:, field_lookup:, ruby_loaders:, config:) ⇒ Specification

Returns a new instance of Specification.



8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
# File 'lib/prato/internal/specification.rb', line 8

def initialize(columns:,
               visible_fields:,
               filterable_fields:,
               sortable_fields:,
               output_paths:,
               field_lookup:,
               ruby_loaders:,
               config:)
  @columns = columns
  @visible_fields = visible_fields
  @filterable_fields = filterable_fields
  @sortable_fields = sortable_fields
  @output_paths = output_paths
  @field_lookup = field_lookup
  @ruby_loaders = ruby_loaders
  @config = config
end

Instance Attribute Details

#columnsObject (readonly)

Returns the value of attribute columns.



6
7
8
# File 'lib/prato/internal/specification.rb', line 6

def columns
  @columns
end

#configObject (readonly)

Returns the value of attribute config.



6
7
8
# File 'lib/prato/internal/specification.rb', line 6

def config
  @config
end

#field_lookupObject (readonly)

Returns the value of attribute field_lookup.



6
7
8
# File 'lib/prato/internal/specification.rb', line 6

def field_lookup
  @field_lookup
end

#ruby_loadersObject (readonly)

Returns the value of attribute ruby_loaders.



6
7
8
# File 'lib/prato/internal/specification.rb', line 6

def ruby_loaders
  @ruby_loaders
end

#visible_fieldsObject (readonly)

Returns the value of attribute visible_fields.



6
7
8
# File 'lib/prato/internal/specification.rb', line 6

def visible_fields
  @visible_fields
end

Instance Method Details

#field_mapping(field_name) ⇒ Object



38
39
40
# File 'lib/prato/internal/specification.rb', line 38

def field_mapping(field_name)
  @output_paths[field_name]
end

#sql_only?(display_fields) ⇒ Boolean

Returns:

  • (Boolean)


42
43
44
# File 'lib/prato/internal/specification.rb', line 42

def sql_only?(display_fields)
  display_fields.none? { |f| @columns[f].is_a?(Types::RubyColumn) }
end

#validate_and_extract_materialization_fields(params) ⇒ Object



26
27
28
29
30
31
32
33
34
35
36
# File 'lib/prato/internal/specification.rb', line 26

def validate_and_extract_materialization_fields(params)
  return @visible_fields if params.nil?

  fields = []

  return nil unless collect_filter_fields(params.filters, fields)
  return nil unless collect_sort_fields(params.sorts, fields)
  return nil unless collect_display_fields(params.fields, fields)

  fields.uniq
end