summaryrefslogtreecommitdiff
path: root/app/graphql/types/time_tracking/timelog_connection_type.rb
blob: 43e6955c2a3e2eb2e83b320fe565c92b77e23005 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
# frozen_string_literal: true

module Types
  module TimeTracking
    # rubocop: disable Graphql/AuthorizeTypes
    class TimelogConnectionType < CountableConnectionType
      field :total_spent_time,
            GraphQL::Types::Int,
            null: false,
            description: 'Total time spent in seconds.'

      def total_spent_time
        # rubocop: disable CodeReuse/ActiveRecord
        relation = object.items

        # sometimes relation is an Array
        relation = relation.reorder(nil) if relation.respond_to?(:reorder)
        # rubocop: enable CodeReuse/ActiveRecord

        relation.sum(:time_spent)
      end
    end
    # rubocop: enable Graphql/AuthorizeTypes
  end
end