Welcome to mirror list, hosted at ThFree Co, Russian Federation.

gitlab.com/gitlab-org/gitlab-foss.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'app/models/operations/feature_flag.rb')
-rw-r--r--app/models/operations/feature_flag.rb26
1 files changed, 26 insertions, 0 deletions
diff --git a/app/models/operations/feature_flag.rb b/app/models/operations/feature_flag.rb
index 442f9d36c43..be3f719ddb3 100644
--- a/app/models/operations/feature_flag.rb
+++ b/app/models/operations/feature_flag.rb
@@ -6,6 +6,7 @@ module Operations
include AtomicInternalId
include IidRoutes
include Limitable
+ include Referable
self.table_name = 'operations_feature_flags'
self.limit_scope = :project
@@ -65,6 +66,31 @@ module Operations
.reorder(:id)
.references(:operations_scopes)
end
+
+ def reference_prefix
+ '[feature_flag:'
+ end
+
+ def reference_pattern
+ @reference_pattern ||= %r{
+ #{Regexp.escape(reference_prefix)}(#{::Project.reference_pattern}\/)?(?<feature_flag>\d+)#{Regexp.escape(reference_postfix)}
+ }x
+ end
+
+ def link_reference_pattern
+ @link_reference_pattern ||= super("feature_flags", /(?<feature_flag>\d+)\/edit/)
+ end
+
+ def reference_postfix
+ ']'
+ end
+ end
+
+ def to_reference(from = nil, full: false)
+ project
+ .to_reference_base(from, full: full)
+ .then { |reference_base| reference_base.present? ? "#{reference_base}/" : nil }
+ .then { |reference_base| "#{self.class.reference_prefix}#{reference_base}#{iid}#{self.class.reference_postfix}" }
end
def related_issues(current_user, preload:)