summaryrefslogtreecommitdiff
path: root/lib/gitlab/background_migration/user_mentions/models/note.rb
diff options
context:
space:
mode:
Diffstat (limited to 'lib/gitlab/background_migration/user_mentions/models/note.rb')
-rw-r--r--lib/gitlab/background_migration/user_mentions/models/note.rb65
1 files changed, 65 insertions, 0 deletions
diff --git a/lib/gitlab/background_migration/user_mentions/models/note.rb b/lib/gitlab/background_migration/user_mentions/models/note.rb
new file mode 100644
index 00000000000..c2828202907
--- /dev/null
+++ b/lib/gitlab/background_migration/user_mentions/models/note.rb
@@ -0,0 +1,65 @@
+# frozen_string_literal: true
+# rubocop:disable Style/Documentation
+
+module Gitlab
+ module BackgroundMigration
+ module UserMentions
+ module Models
+ class Note < ActiveRecord::Base
+ include IsolatedMentionable
+ include CacheMarkdownField
+
+ self.table_name = 'notes'
+ self.inheritance_column = :_type_disabled
+
+ attr_mentionable :note, pipeline: :note
+ cache_markdown_field :note, pipeline: :note, issuable_state_filter_enabled: true
+
+ belongs_to :author, class_name: "User"
+ belongs_to :noteable, polymorphic: true
+ belongs_to :project
+
+ def user_mention_model
+ "#{CreateResourceUserMention::ISOLATION_MODULE}::#{noteable.class}".constantize.user_mention_model
+ end
+
+ def for_personal_snippet?
+ noteable.class.name == 'PersonalSnippet'
+ end
+
+ def for_project_noteable?
+ !for_personal_snippet?
+ end
+
+ def skip_project_check?
+ !for_project_noteable?
+ end
+
+ def for_epic?
+ noteable.class.name == 'Epic'
+ end
+
+ def user_mention_resource_id
+ noteable_id || commit_id
+ end
+
+ def user_mention_note_id
+ id
+ end
+
+ private
+
+ def mentionable_params
+ return super unless for_epic?
+
+ super.merge(banzai_context_params)
+ end
+
+ def banzai_context_params
+ { group: noteable.group, label_url_method: :group_epics_url }
+ end
+ end
+ end
+ end
+ end
+end