Class: Types::BaseEnum

Inherits:
GraphQL::Schema::Enum
  • Object
show all
Defined in:
app/graphql/types/base_enum.rb

Direct Known Subclasses

AccessLevelEnum, Admin::Analytics::UsageTrends::MeasurementIdentifierEnum, AlertManagement::DomainFilterEnum, AlertManagement::IntegrationTypeEnum, AlertManagement::SeverityEnum, AlertManagement::StatusEnum, AssigneeWildcardIdEnum, AvailabilityEnum, Types::BlobViewers::TypeEnum, Ci::CodeQualityDegradationSeverityEnum, Ci::Config::IncludeTypeEnum, Ci::Config::StatusEnum, Ci::FreezePeriodStatusEnum, Ci::GroupVariablesSortEnum, Ci::JobArtifactFileTypeEnum, Ci::JobFailureReasonEnum, Ci::JobKindEnum, Ci::JobStatusEnum, Ci::JobTokenScope::DirectionEnum, Ci::PipelineConfigSourceEnum, Ci::PipelineMergeRequestEventTypeEnum, Ci::PipelineScheduleStatusEnum, Ci::PipelineScopeEnum, Ci::PipelineStatusEnum, Ci::RunnerAccessLevelEnum, Ci::RunnerJobExecutionStatusEnum, Ci::RunnerMembershipFilterEnum, Ci::RunnerSortEnum, Ci::RunnerStatusEnum, Ci::RunnerTypeEnum, Ci::RunnerUpgradeStatusEnum, Ci::TestCaseStatusEnum, Ci::VariableSortEnum, Ci::VariableTypeEnum, CiConfiguration::Sast::UiComponentSizeEnum, Clusters::AgentTokenStatusEnum, CommitActionModeEnum, CommitEncodingEnum, CommitSignatures::VerificationStatusEnum, ContainerExpirationPolicyCadenceEnum, ContainerExpirationPolicyKeepEnum, ContainerExpirationPolicyOlderThanEnum, ContainerRepositoryCleanupStatusEnum, ContainerRepositoryStatusEnum, ContainerRepositoryTagsSortEnum, CustomerRelations::ContactStateEnum, CustomerRelations::OrganizationStateEnum, DataVisualizationPalette::ColorEnum, DataVisualizationPalette::WeightEnum, DeploymentStatusEnum, DeploymentTierEnum, DesignManagement::DesignCollectionCopyStateEnum, DesignManagement::DesignVersionEventEnum, ErrorTracking::SentryErrorStatusEnum, EventActionEnum, GroupMemberRelationEnum, GroupReleaseSortEnum, IncidentManagement::EscalationStatusEnum, IssuableSearchableFieldEnum, IssuableSeverityEnum, IssuableStateEnum, IssuableSubscriptionEventEnum, IssueStateEventEnum, IssueTypeEnum, MemberAccessLevelEnum, MergeRequestReviewStateEnum, MergeRequestStateEventEnum, MergeRequests::DetailedMergeStatusEnum, MergeRequests::MergeStatusEnum, MergeStrategyEnum, MilestoneStateEnum, MilestoneWildcardIdEnum, MutationOperationModeEnum, NegatedMilestoneWildcardIdEnum, Notes::PositionTypeEnum, Organizations::GroupSortEnum, Packages::Cleanup::KeepDuplicatedPackageFilesEnum, Packages::Conan::MetadatumFileTypeEnum, Packages::PackageDependencyTypeEnum, Packages::PackageSortEnum, Packages::PackageStatusEnum, Packages::PackageTypeEnum, PermissionTypes::GroupEnum, ProjectMemberRelationEnum, Projects::NamespaceProjectSortEnum, Projects::ServiceTypeEnum, RefTypeEnum, RelativePositionTypeEnum, ReleaseAssetLinkTypeEnum, ReleaseSortEnum, ReleaseTagWildcardIdEnum, Security::CodequalityReportsComparer::StatusEnum, Security::ReportTypeEnum, ShaFormatEnum, Snippets::BlobActionEnum, Snippets::TypeEnum, Snippets::VisibilityScopesEnum, SortDirectionEnum, SortEnum, TodoActionEnum, TodoStateEnum, TodoTargetEnum, Tree::TypeEnum, UserCalloutFeatureNameEnum, UserStateEnum, VisibilityLevelsEnum, VisibilityPipelineIdTypeEnum, WorkItemStateEnum, WorkItems::AvailableExportFieldsEnum, WorkItems::AwardEmojiUpdateActionEnum, WorkItems::NotesFilterTypeEnum, WorkItems::RelatedLinkTypeEnum, WorkItems::StateEventEnum, WorkItems::TodoUpdateActionEnum, WorkItems::WidgetTypeEnum

Defined Under Namespace

Classes: CustomValue

Class Method Summary collapse

Class Method Details

.authorizationObject



65
66
67
# File 'app/graphql/types/base_enum.rb', line 65

def authorization
  @authorization ||= ::Gitlab::Graphql::Authorize::ObjectAuthorization.new(authorize)
end

.authorize(*abilities) ⇒ Object



69
70
71
# File 'app/graphql/types/base_enum.rb', line 69

def authorize(*abilities)
  @abilities = abilities
end

.authorized?(object, context) ⇒ Boolean

Returns:

  • (Boolean)


73
74
75
# File 'app/graphql/types/base_enum.rb', line 73

def authorized?(object, context)
  authorization.ok?(object, context[:current_user])
end

.declarative_enum(enum_mod, use_name: true, use_description: true) ⇒ Object

Registers enum definition by the given DeclarativeEnum module

Example:

class MyEnum < BaseEnum
  declarative_enum MyDeclarativeEnum
end

Disabling descriptions rubocop for a false positive here rubocop: disable Graphql/Descriptions

Parameters:

  • enum_mod (Module)

    The enum module to be used

  • use_name (Boolean) (defaults to: true)

    Does not override the name if set ‘false`

  • use_description (Boolean) (defaults to: true)

    Does not override the description if set ‘false`



34
35
36
37
38
39
40
41
# File 'app/graphql/types/base_enum.rb', line 34

def declarative_enum(enum_mod, use_name: true, use_description: true)
  graphql_name(enum_mod.name) if use_name
  description(enum_mod.description) if use_description

  enum_mod.definition.each do |key, content|
    value(key.to_s.upcase, value: key.to_s, description: content[:description])
  end
end

.enumObject

Returns an indifferent access hash with the key being the downcased name of the attribute and the value being the Ruby value (either the explicit ‘value` passed or the same as the value attr).



61
62
63
# File 'app/graphql/types/base_enum.rb', line 61

def enum
  @enum_values ||= {}.with_indifferent_access
end

.from_rails_enum(enum, description:) ⇒ Object

Helper to define an enum member for each element of a Rails AR enum



45
46
47
48
49
50
51
# File 'app/graphql/types/base_enum.rb', line 45

def from_rails_enum(enum, description:)
  enum.each_key do |name|
    value name.to_s.upcase,
          value: name,
          description: format(description, name: name)
  end
end

.value(*args, **kwargs, &block) ⇒ Object



53
54
55
56
57
# File 'app/graphql/types/base_enum.rb', line 53

def value(*args, **kwargs, &block)
  enum[args[0].downcase] = kwargs[:value] || args[0]

  super(*args, **kwargs, &block)
end