lib/graphql/groups/has_groups.rb in graphql-groups-0.1.4 vs lib/graphql/groups/has_groups.rb in graphql-groups-0.2.0
- old
+ new
@@ -15,32 +15,31 @@
end
module ClassMethods
attr_reader :class_scope
- # TODO: Error if there are no groupings defined
def by(name, **options, &block)
query_method = options[:query_method] || name
resolver_method = "resolve_#{query_method}".to_sym
group_field name, [own_result_type],
- null: false,
- resolver_method: resolver_method,
query_method: query_method,
+ null: true,
+ resolver_method: resolver_method,
+
**options, &block
define_method query_method do |**kwargs|
kwargs[:scope].group(name)
end
- # TODO: Warn / Disallow overwriting these resolver methods
define_method resolver_method do |**_|
group[name]
end
end
def group_field(*args, **kwargs, &block)
- field_defn = Schema::GroupField.from_options(*args, owner: self, **kwargs, &block)
+ field_defn = field_class.from_options(*args, owner: self, **kwargs, &block)
add_field(field_defn)
field_defn
end
def result_type(&block)
@@ -63,10 +62,24 @@
graphql_name type.name.demodulize
field :group_by, own_group_type, null: false, camelize: true
def group_by
- group_result[1][:nested]
+ group_result[1][:group_by]
+ end
+ end)
+ end
+
+ def own_field_type
+ type = "#{name}Field"
+ base_field_type = field_class
+ registry = GraphQL::Groups::GroupTypeRegistry.instance
+ registry.get(type) || registry.register(type, Class.new(base_field_type) do
+ attr_reader :query_method
+
+ def initialize(query_method:, **options, &definition_block)
+ @query_method = query_method
+ super(**options.except(:query_method), &definition_block)
end
end)
end
def find_result_type