diff options
Diffstat (limited to 'app/graphql/types/project_type.rb')
-rw-r--r-- | app/graphql/types/project_type.rb | 63 |
1 files changed, 61 insertions, 2 deletions
diff --git a/app/graphql/types/project_type.rb b/app/graphql/types/project_type.rb index 4e438ed2576..bbfb7fc4f20 100644 --- a/app/graphql/types/project_type.rb +++ b/app/graphql/types/project_type.rb @@ -95,6 +95,8 @@ module Types description: 'Status of Jira import background job of the project' field :only_allow_merge_if_pipeline_succeeds, GraphQL::BOOLEAN_TYPE, null: true, description: 'Indicates if merge requests of the project can only be merged with successful jobs' + field :allow_merge_on_skipped_pipeline, GraphQL::BOOLEAN_TYPE, null: true, + description: 'If `only_allow_merge_if_pipeline_succeeds` is true, indicates if merge requests of the project can also be merged with skipped jobs' field :request_access_enabled, GraphQL::BOOLEAN_TYPE, null: true, description: 'Indicates if users can request member access to the project' field :only_allow_merge_if_all_discussions_are_resolved, GraphQL::BOOLEAN_TYPE, null: true, @@ -125,6 +127,7 @@ module Types Types::MergeRequestType.connection_type, null: true, description: 'Merge requests of the project', + extras: [:lookahead], resolver: Resolvers::MergeRequestsResolver field :merge_request, @@ -139,6 +142,11 @@ module Types description: 'Issues of the project', resolver: Resolvers::IssuesResolver + field :project_members, + Types::ProjectMemberType.connection_type, + description: 'Members of the project', + resolver: Resolvers::ProjectMembersResolver + field :environments, Types::EnvironmentType.connection_type, null: true, @@ -157,6 +165,12 @@ module Types description: 'Build pipelines of the project', resolver: Resolvers::ProjectPipelinesResolver + field :pipeline, + Types::Ci::PipelineType, + null: true, + description: 'Build pipeline of the project', + resolver: Resolvers::ProjectPipelineResolver + field :sentry_detailed_error, Types::ErrorTracking::SentryDetailedErrorType, null: true, @@ -210,13 +224,14 @@ module Types Types::AlertManagement::AlertType.connection_type, null: true, description: 'Alert Management alerts of the project', - resolver: Resolvers::AlertManagementAlertResolver + extras: [:lookahead], + resolver: Resolvers::AlertManagement::AlertResolver field :alert_management_alert, Types::AlertManagement::AlertType, null: true, description: 'A single Alert Management alert of the project', - resolver: Resolvers::AlertManagementAlertResolver.single + resolver: Resolvers::AlertManagement::AlertResolver.single field :alert_management_alert_status_counts, Types::AlertManagement::AlertStatusCountsType, @@ -237,6 +252,50 @@ module Types description: 'A single release of the project', resolver: Resolvers::ReleasesResolver.single, feature_flag: :graphql_release_data + + field :container_expiration_policy, + Types::ContainerExpirationPolicyType, + null: true, + description: 'The container expiration policy of the project' + + field :label, + Types::LabelType, + null: true, + description: 'A label available on this project' do + argument :title, GraphQL::STRING_TYPE, + required: true, + description: 'Title of the label' + end + + def label(title:) + BatchLoader::GraphQL.for(title).batch(key: project) do |titles, loader, args| + LabelsFinder + .new(current_user, project: args[:key], title: titles) + .execute + .each { |label| loader.call(label.title, label) } + end + end + + field :labels, + Types::LabelType.connection_type, + null: true, + description: 'Labels available on this project' do + argument :search_term, GraphQL::STRING_TYPE, + required: false, + description: 'A search term to find labels with' + end + + def labels(search_term: nil) + LabelsFinder + .new(current_user, project: project, search: search_term) + .execute + end + + private + + def project + @project ||= object.respond_to?(:sync) ? object.sync : object + end end end |