Module: Graphoid::Orders

Defined in:
lib/graphoid/definitions/orders.rb

Constant Summary collapse

LIST =
{}
@@enum_type =
nil

Class Method Summary collapse

Class Method Details

.enum_type ⇒ Object



32
33
34
35
36
37
38
39
# File 'lib/graphoid/definitions/orders.rb', line 32

def enum_type
  @@enum_type ||= GraphQL::EnumType.define do
    name "SortType"

    value "ASC", "Ascendent"
    value "DESC", "Descendent"
  end
end

.generate(model) ⇒ Object



8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
# File 'lib/graphoid/definitions/orders.rb', line 8

def generate(model)
  LIST[model] ||= GraphQL::InputObjectType.define do
    name("#{Utils.graphqlize(model.name)}Order")
    description("Generated model order for #{model.name}")

    Attribute.fields_of(model).each do |field|
      name = Utils.camelize(field.name)
      argument(name, Orders.enum_type)
    end

    Relation.relations_of(model).each do |name, relation|
      relation_class = relation.class_name.safe_constantize
      next unless relation_class

      relation_order = LIST[relation_class]
      next unless relation_order

      relation_name = Utils.camelize(name)

      argument(relation_name, relation_order)
    end
  end
end