debian-mirror-gitlab/app/graphql/types/project_type.rb

105 lines
5.2 KiB
Ruby
Raw Normal View History

2018-12-05 23:21:45 +05:30
# frozen_string_literal: true
2018-11-08 19:23:39 +05:30
module Types
class ProjectType < BaseObject
2019-05-30 16:15:17 +05:30
graphql_name 'Project'
2019-07-07 11:18:12 +05:30
authorize :read_project
expose_permissions Types::PermissionTypes::Project
2019-12-04 20:38:33 +05:30
field :id, GraphQL::ID_TYPE, null: false # rubocop:disable Graphql/Descriptions
2018-11-08 19:23:39 +05:30
2019-12-04 20:38:33 +05:30
field :full_path, GraphQL::ID_TYPE, null: false # rubocop:disable Graphql/Descriptions
field :path, GraphQL::STRING_TYPE, null: false # rubocop:disable Graphql/Descriptions
2018-11-08 19:23:39 +05:30
2019-12-04 20:38:33 +05:30
field :name_with_namespace, GraphQL::STRING_TYPE, null: false # rubocop:disable Graphql/Descriptions
field :name, GraphQL::STRING_TYPE, null: false # rubocop:disable Graphql/Descriptions
2018-11-08 19:23:39 +05:30
2019-12-04 20:38:33 +05:30
field :description, GraphQL::STRING_TYPE, null: true # rubocop:disable Graphql/Descriptions
2019-09-30 21:07:59 +05:30
markdown_field :description_html, null: true
2018-11-08 19:23:39 +05:30
2019-12-04 20:38:33 +05:30
field :tag_list, GraphQL::STRING_TYPE, null: true # rubocop:disable Graphql/Descriptions
2018-11-08 19:23:39 +05:30
2019-12-04 20:38:33 +05:30
field :ssh_url_to_repo, GraphQL::STRING_TYPE, null: true # rubocop:disable Graphql/Descriptions
field :http_url_to_repo, GraphQL::STRING_TYPE, null: true # rubocop:disable Graphql/Descriptions
field :web_url, GraphQL::STRING_TYPE, null: true # rubocop:disable Graphql/Descriptions
2018-11-08 19:23:39 +05:30
2019-12-04 20:38:33 +05:30
field :star_count, GraphQL::INT_TYPE, null: false # rubocop:disable Graphql/Descriptions
field :forks_count, GraphQL::INT_TYPE, null: false, calls_gitaly: true # 4 times # rubocop:disable Graphql/Descriptions
2018-11-08 19:23:39 +05:30
2019-12-04 20:38:33 +05:30
field :created_at, Types::TimeType, null: true # rubocop:disable Graphql/Descriptions
field :last_activity_at, Types::TimeType, null: true # rubocop:disable Graphql/Descriptions
2018-11-08 19:23:39 +05:30
2019-12-04 20:38:33 +05:30
field :archived, GraphQL::BOOLEAN_TYPE, null: true # rubocop:disable Graphql/Descriptions
2018-11-08 19:23:39 +05:30
2019-12-04 20:38:33 +05:30
field :visibility, GraphQL::STRING_TYPE, null: true # rubocop:disable Graphql/Descriptions
2018-11-08 19:23:39 +05:30
2019-12-04 20:38:33 +05:30
field :container_registry_enabled, GraphQL::BOOLEAN_TYPE, null: true # rubocop:disable Graphql/Descriptions
field :shared_runners_enabled, GraphQL::BOOLEAN_TYPE, null: true # rubocop:disable Graphql/Descriptions
field :lfs_enabled, GraphQL::BOOLEAN_TYPE, null: true # rubocop:disable Graphql/Descriptions
field :merge_requests_ff_only_enabled, GraphQL::BOOLEAN_TYPE, null: true # rubocop:disable Graphql/Descriptions
2018-11-08 19:23:39 +05:30
2019-12-04 20:38:33 +05:30
field :avatar_url, GraphQL::STRING_TYPE, null: true, calls_gitaly: true, resolve: -> (project, args, ctx) do # rubocop:disable Graphql/Descriptions
2018-11-08 19:23:39 +05:30
project.avatar_url(only_path: false)
end
%i[issues merge_requests wiki snippets].each do |feature|
2019-12-04 20:38:33 +05:30
field "#{feature}_enabled", GraphQL::BOOLEAN_TYPE, null: true, resolve: -> (project, args, ctx) do # rubocop:disable Graphql/Descriptions
2018-11-08 19:23:39 +05:30
project.feature_available?(feature, ctx[:current_user])
end
end
2019-12-04 20:38:33 +05:30
field :jobs_enabled, GraphQL::BOOLEAN_TYPE, null: true, resolve: -> (project, args, ctx) do # rubocop:disable Graphql/Descriptions
2018-11-08 19:23:39 +05:30
project.feature_available?(:builds, ctx[:current_user])
end
2019-12-04 20:38:33 +05:30
field :public_jobs, GraphQL::BOOLEAN_TYPE, method: :public_builds, null: true # rubocop:disable Graphql/Descriptions
2018-11-08 19:23:39 +05:30
2019-12-04 20:38:33 +05:30
field :open_issues_count, GraphQL::INT_TYPE, null: true, resolve: -> (project, args, ctx) do # rubocop:disable Graphql/Descriptions
2018-11-08 19:23:39 +05:30
project.open_issues_count if project.feature_available?(:issues, ctx[:current_user])
end
2019-12-04 20:38:33 +05:30
field :import_status, GraphQL::STRING_TYPE, null: true # rubocop:disable Graphql/Descriptions
2018-11-08 19:23:39 +05:30
2019-12-04 20:38:33 +05:30
field :only_allow_merge_if_pipeline_succeeds, GraphQL::BOOLEAN_TYPE, null: true # rubocop:disable Graphql/Descriptions
field :request_access_enabled, GraphQL::BOOLEAN_TYPE, null: true # rubocop:disable Graphql/Descriptions
field :only_allow_merge_if_all_discussions_are_resolved, GraphQL::BOOLEAN_TYPE, null: true # rubocop:disable Graphql/Descriptions
field :printing_merge_request_link_enabled, GraphQL::BOOLEAN_TYPE, null: true # rubocop:disable Graphql/Descriptions
2018-11-08 19:23:39 +05:30
2019-12-04 20:38:33 +05:30
field :namespace, Types::NamespaceType, null: true # rubocop:disable Graphql/Descriptions
field :group, Types::GroupType, null: true # rubocop:disable Graphql/Descriptions
2019-07-31 22:56:46 +05:30
2019-12-04 20:38:33 +05:30
field :statistics, Types::ProjectStatisticsType, # rubocop:disable Graphql/Descriptions
2019-09-04 21:01:54 +05:30
null: true,
resolve: -> (obj, _args, _ctx) { Gitlab::Graphql::Loaders::BatchProjectStatisticsLoader.new(obj.id).find }
2019-12-04 20:38:33 +05:30
field :repository, Types::RepositoryType, null: true # rubocop:disable Graphql/Descriptions
2019-09-04 21:01:54 +05:30
2019-12-04 20:38:33 +05:30
field :merge_requests, # rubocop:disable Graphql/Descriptions
2019-07-07 11:18:12 +05:30
Types::MergeRequestType.connection_type,
null: true,
resolver: Resolvers::MergeRequestsResolver
2019-12-04 20:38:33 +05:30
field :merge_request, # rubocop:disable Graphql/Descriptions
2018-11-08 19:23:39 +05:30
Types::MergeRequestType,
null: true,
2019-07-07 11:18:12 +05:30
resolver: Resolvers::MergeRequestsResolver.single
2018-11-08 19:23:39 +05:30
2019-12-04 20:38:33 +05:30
field :issues, # rubocop:disable Graphql/Descriptions
2019-02-15 15:39:39 +05:30
Types::IssueType.connection_type,
null: true,
resolver: Resolvers::IssuesResolver
2019-12-04 20:38:33 +05:30
field :issue, # rubocop:disable Graphql/Descriptions
2019-12-21 20:55:43 +05:30
Types::ExtendedIssueType,
2019-07-07 11:18:12 +05:30
null: true,
resolver: Resolvers::IssuesResolver.single
2019-12-04 20:38:33 +05:30
field :pipelines, # rubocop:disable Graphql/Descriptions
2018-11-08 19:23:39 +05:30
Types::Ci::PipelineType.connection_type,
2019-07-07 11:18:12 +05:30
null: true,
2018-11-08 19:23:39 +05:30
resolver: Resolvers::ProjectPipelinesResolver
end
end