1# frozen_string_literal: true
2
3module Resolvers
4  module Clusters
5    class AgentsResolver < BaseResolver
6      include LooksAhead
7
8      type Types::Clusters::AgentType.connection_type, null: true
9
10      extras [:lookahead]
11
12      when_single do
13        argument :name, GraphQL::Types::String,
14            required: true,
15            description: 'Name of the cluster agent.'
16      end
17
18      alias_method :project, :object
19
20      def resolve_with_lookahead(**args)
21        apply_lookahead(
22          ::Clusters::AgentsFinder
23            .new(project, current_user, params: args)
24            .execute
25        )
26      end
27
28      private
29
30      def preloads
31        {
32          activity_events: { activity_events: [:user, agent_token: :agent] },
33          tokens: :last_used_agent_tokens
34        }
35      end
36    end
37  end
38end
39