Class: Gitlab::GithubImport::Importer::NoteImporter
- Inherits:
-
Object
- Object
- Gitlab::GithubImport::Importer::NoteImporter
- Defined in:
- lib/gitlab/github_import/importer/note_importer.rb
Instance Attribute Summary collapse
-
#client ⇒ Object
readonly
Returns the value of attribute client.
-
#note ⇒ Object
readonly
Returns the value of attribute note.
-
#project ⇒ Object
readonly
Returns the value of attribute project.
-
#user_finder ⇒ Object
readonly
Returns the value of attribute user_finder.
Instance Method Summary collapse
- #execute ⇒ Object
-
#find_noteable_id ⇒ Object
Returns the ID of the issue or merge request to create the note for.
-
#initialize(note, project, client) ⇒ NoteImporter
constructor
note - An instance of ‘Gitlab::GithubImport::Representation::Note`.
Constructor Details
#initialize(note, project, client) ⇒ NoteImporter
note - An instance of ‘Gitlab::GithubImport::Representation::Note`. project - An instance of `Project`. client - An instance of `Gitlab::GithubImport::Client`.
12 13 14 15 16 17 |
# File 'lib/gitlab/github_import/importer/note_importer.rb', line 12 def initialize(note, project, client) @note = note @project = project @client = client @user_finder = GithubImport::UserFinder.new(project, client) end |
Instance Attribute Details
#client ⇒ Object (readonly)
Returns the value of attribute client.
7 8 9 |
# File 'lib/gitlab/github_import/importer/note_importer.rb', line 7 def client @client end |
#note ⇒ Object (readonly)
Returns the value of attribute note.
7 8 9 |
# File 'lib/gitlab/github_import/importer/note_importer.rb', line 7 def note @note end |
#project ⇒ Object (readonly)
Returns the value of attribute project.
7 8 9 |
# File 'lib/gitlab/github_import/importer/note_importer.rb', line 7 def project @project end |
#user_finder ⇒ Object (readonly)
Returns the value of attribute user_finder.
7 8 9 |
# File 'lib/gitlab/github_import/importer/note_importer.rb', line 7 def user_finder @user_finder end |
Instance Method Details
#execute ⇒ Object
19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 |
# File 'lib/gitlab/github_import/importer/note_importer.rb', line 19 def execute return unless (noteable_id = find_noteable_id) , = user_finder.(note) attributes = { noteable_type: note.noteable_type, noteable_id: noteable_id, project_id: project.id, author_id: , note: note_body(), discussion_id: note.discussion_id, system: false, created_at: note.created_at, updated_at: note.updated_at } note = Note.new(attributes.merge(importing: true)) note.validate! # We're using bulk_insert here so we can bypass any validations and # callbacks. Running these would result in a lot of unnecessary SQL # queries being executed when importing large projects. # Note: if you're going to replace `legacy_bulk_insert` with something that trigger callback # to generate HTML version - you also need to regenerate it in # Gitlab::GithubImport::Importer::NoteAttachmentsImporter. ApplicationRecord.legacy_bulk_insert(Note.table_name, [attributes]) # rubocop:disable Gitlab/BulkInsert rescue ActiveRecord::InvalidForeignKey # It's possible the project and the issue have been deleted since # scheduling this job. In this case we'll just skip creating the note. end |
#find_noteable_id ⇒ Object
Returns the ID of the issue or merge request to create the note for.
52 53 54 |
# File 'lib/gitlab/github_import/importer/note_importer.rb', line 52 def find_noteable_id GithubImport::IssuableFinder.new(project, note).database_id end |