Class: Graphiti::ActiveGraph::Extensions::Grouping::Params

Inherits:
Object
  • Object
show all
Defined in:
lib/graphiti/active_graph/extensions/grouping/params.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(params, resource_class) ⇒ Params

Returns a new instance of Params.



4
5
6
7
8
# File 'lib/graphiti/active_graph/extensions/grouping/params.rb', line 4

def initialize(params, resource_class)
  @params = params
  @grouping_criteria_list = params.fetch(:group_by, nil)&.split(',') || []
  @resource_class = resource_class
end

Instance Attribute Details

#grouping_criteria_listObject (readonly)

Returns the value of attribute grouping_criteria_list.



3
4
5
# File 'lib/graphiti/active_graph/extensions/grouping/params.rb', line 3

def grouping_criteria_list
  @grouping_criteria_list
end

#paramsObject (readonly)

Returns the value of attribute params.



3
4
5
# File 'lib/graphiti/active_graph/extensions/grouping/params.rb', line 3

def params
  @params
end

#resource_classObject (readonly)

Returns the value of attribute resource_class.



3
4
5
# File 'lib/graphiti/active_graph/extensions/grouping/params.rb', line 3

def resource_class
  @resource_class
end

Instance Method Details

#empty?Boolean

Returns:

  • (Boolean)


18
19
20
# File 'lib/graphiti/active_graph/extensions/grouping/params.rb', line 18

def empty?
  grouping_criteria_list.empty?
end

#ends_with_attribute?(model, criteria) ⇒ Boolean

Returns:

  • (Boolean)


22
23
24
25
26
# File 'lib/graphiti/active_graph/extensions/grouping/params.rb', line 22

def ends_with_attribute?(model, criteria)
  return false if criteria.blank?

  last_segment_attribute?(model, criteria.split('.'))
end

#grouping_criteria_on_attribute?Boolean

Returns:

  • (Boolean)


14
15
16
# File 'lib/graphiti/active_graph/extensions/grouping/params.rb', line 14

def grouping_criteria_on_attribute?
  grouping_criteria_list.any? { |criteria| ends_with_attribute?(resource_class.model, criteria) }
end

#single_grouping_criteria?Boolean

Returns:

  • (Boolean)


10
11
12
# File 'lib/graphiti/active_graph/extensions/grouping/params.rb', line 10

def single_grouping_criteria?
  grouping_criteria_list.size < 2
end