Module: HQ::GraphQL::Resource::ClassMethods
- Includes:
- AutoMutation
- Defined in:
- lib/hq/graphql/resource.rb
Instance Attribute Summary collapse
Instance Method Summary
collapse
#build_copy, #build_create, #build_destroy, #build_mutation, #build_update
Instance Attribute Details
#graphql_name ⇒ Object
55
56
57
|
# File 'lib/hq/graphql/resource.rb', line 55
def graphql_name
@graphql_name || model_name.demodulize
end
|
#model_name ⇒ Object
59
60
61
|
# File 'lib/hq/graphql/resource.rb', line 59
def model_name
@model_name || ::HQ::GraphQL.(self)
end
|
Instance Method Details
#find_record(attrs, context) ⇒ Object
45
46
47
48
49
|
# File 'lib/hq/graphql/resource.rb', line 45
def find_record(attrs, context)
primary_key = model_klass.primary_key.to_sym
primary_key_value = attrs[primary_key]
scope(context).find_by(primary_key => primary_key_value)
end
|
71
72
73
|
# File 'lib/hq/graphql/resource.rb', line 71
def input_klass
@input_klass ||= build_input_object
end
|
#model_klass ⇒ Object
63
64
65
|
# File 'lib/hq/graphql/resource.rb', line 63
def model_klass
@model_klass ||= model_name&.safe_constantize
end
|
#mutation_klasses ⇒ Object
67
68
69
|
# File 'lib/hq/graphql/resource.rb', line 67
def mutation_klasses
@mutation_klasses ||= {}.with_indifferent_access
end
|
#new_record(context) ⇒ Object
51
52
53
|
# File 'lib/hq/graphql/resource.rb', line 51
def new_record(context)
scope(context).new
end
|
#nil_query_klass ⇒ Object
75
76
77
|
# File 'lib/hq/graphql/resource.rb', line 75
def nil_query_klass
@nil_query_klass ||= build_graphql_object(name: "#{graphql_name}Copy", auto_nil: false)
end
|
#query_klass ⇒ Object
79
80
81
|
# File 'lib/hq/graphql/resource.rb', line 79
def query_klass
@query_klass ||= build_graphql_object
end
|
#scope(context) ⇒ Object
39
40
41
42
43
|
# File 'lib/hq/graphql/resource.rb', line 39
def scope(context)
scope = model_klass
scope = ::HQ::GraphQL.default_scope(scope, context)
@default_scope&.call(scope, context) || scope
end
|
#sort_fields(*fields) ⇒ Object
21
22
23
|
# File 'lib/hq/graphql/resource.rb', line 21
def sort_fields(*fields)
self.sort_fields_enum = fields
end
|
#sort_fields_enum ⇒ Object
25
26
27
|
# File 'lib/hq/graphql/resource.rb', line 25
def sort_fields_enum
@sort_fields_enum || ::HQ::GraphQL::Enum::SortBy
end
|
#sort_fields_enum=(fields) ⇒ Object
29
30
31
32
33
34
35
36
37
|
# File 'lib/hq/graphql/resource.rb', line 29
def sort_fields_enum=(fields)
@sort_fields_enum ||= Class.new(::HQ::GraphQL::Enum::SortBy).tap do |c|
c.graphql_name "#{graphql_name}Sort"
end
Array(fields).each do |field|
@sort_fields_enum.value field.to_s.classify, value: field
end
end
|