2020-07-16 06:09:33 +00:00
|
|
|
# frozen_string_literal: true
|
|
|
|
|
|
|
|
module Types
|
|
|
|
# rubocop: disable Graphql/AuthorizeTypes
|
2020-08-13 18:10:36 +00:00
|
|
|
class CountableConnectionType < GraphQL::Types::Relay::BaseConnection
|
2021-07-26 12:10:08 +00:00
|
|
|
field :count, GraphQL::Types::Int, null: false,
|
2022-08-03 06:10:47 +00:00
|
|
|
description: 'Total count of collection.'
|
2020-07-16 06:09:33 +00:00
|
|
|
|
|
|
|
def count
|
2020-08-07 12:09:59 +00:00
|
|
|
# rubocop: disable CodeReuse/ActiveRecord
|
|
|
|
relation = object.items
|
2020-08-13 18:10:36 +00:00
|
|
|
|
2020-08-07 12:09:59 +00:00
|
|
|
# sometimes relation is an Array
|
|
|
|
relation = relation.reorder(nil) if relation.respond_to?(:reorder)
|
|
|
|
# rubocop: enable CodeReuse/ActiveRecord
|
|
|
|
|
|
|
|
if relation.try(:group_values)&.present?
|
|
|
|
relation.size.keys.size
|
|
|
|
else
|
|
|
|
relation.size
|
|
|
|
end
|
2020-07-16 06:09:33 +00:00
|
|
|
end
|
|
|
|
end
|
|
|
|
end
|