summaryrefslogtreecommitdiff
path: root/lib/gitlab/github_import/base_formatter.rb
blob: 6dbae64a9fe767b21a977cb48f2abc5c7d429d8a (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
module Gitlab
  module GithubImport
    class BaseFormatter
      attr_reader :formatter, :project, :raw_data

      def initialize(project, raw_data)
        @project = project
        @raw_data = raw_data
        @formatter = Gitlab::ImportFormatter.new
      end

      def create!
        project.public_send(project_association).find_or_create_by!(find_condition) do |record|
          record.attributes = attributes
        end
      end

      private

      def gitlab_user_id(github_id)
        User.joins(:identities).
          find_by("identities.extern_uid = ? AND identities.provider = 'github'", github_id.to_s).
          try(:id)
      end

      def gitlab_author_id
        return @gitlab_author_id if defined?(@gitlab_author_id)
        @gitlab_author_id = gitlab_user_id(raw_data.user.id)
      end
    end
  end
end