Module: GraphQR::BaseResolvers

Included in:
QueryField, RelationFields
Defined in:
lib/graphqr/base_resolvers.rb

Instance Method Summary collapse

Instance Method Details

#base_collection_resolver(type_class, scope_class) ⇒ Object



9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
# File 'lib/graphqr/base_resolvers.rb', line 9

def base_collection_resolver(type_class, scope_class)
  Class.new(GraphQR::BaseResolver) do
    type type_class.pagination_type, null: false

    argument :filter, scope_class, required: false if scope_class.present?

    def resolve(filter: {})
      authorize_graphql unscoped_collection, :index?

      collection = apply_scopes(unscoped_collection, filter)
      context[:policy_provider].authorized_records(records: collection)
    end

    def unscoped_collection
      raise NotImplementedError
    end
  end
end

#base_resource_resolver(type_class) ⇒ Object



28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
# File 'lib/graphqr/base_resolvers.rb', line 28

def base_resource_resolver(type_class)
  Class.new(GraphQR::BaseResolver) do
    type type_class, null: false

    def resolve
      context[:policy_provider].allowed?(action: :show?, record: record)

      record
    end

    def record
      raise NotImplementedError
    end
  end
end