2015-12-23 17:02:59 -05:00
|
|
|
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
|
|
|
|
|
2016-06-06 13:00:44 -04:00
|
|
|
def create!
|
2016-10-27 08:54:51 -04:00
|
|
|
project.public_send(project_association).find_or_create_by!(find_condition) do |record|
|
2016-10-19 14:42:31 -04:00
|
|
|
record.attributes = attributes
|
|
|
|
end
|
2016-06-06 13:00:44 -04:00
|
|
|
end
|
|
|
|
|
2015-12-23 17:02:59 -05:00
|
|
|
private
|
|
|
|
|
2016-09-07 20:44:58 -04:00
|
|
|
def gitlab_user_id(github_id)
|
2015-12-23 17:02:59 -05:00
|
|
|
User.joins(:identities).
|
|
|
|
find_by("identities.extern_uid = ? AND identities.provider = 'github'", github_id.to_s).
|
|
|
|
try(:id)
|
|
|
|
end
|
2016-08-29 05:48:36 -04:00
|
|
|
|
|
|
|
def gitlab_author_id
|
|
|
|
return @gitlab_author_id if defined?(@gitlab_author_id)
|
|
|
|
@gitlab_author_id = gitlab_user_id(raw_data.user.id)
|
|
|
|
end
|
2015-12-23 17:02:59 -05:00
|
|
|
end
|
|
|
|
end
|
|
|
|
end
|