2018-03-17 18:26:18 +05:30
|
|
|
# frozen_string_literal: true
|
|
|
|
|
|
|
|
module Gitlab
|
|
|
|
module GithubImport
|
|
|
|
module BulkImporting
|
|
|
|
# Builds and returns an Array of objects to bulk insert into the
|
|
|
|
# database.
|
|
|
|
#
|
|
|
|
# enum - An Enumerable that returns the objects to turn into database
|
|
|
|
# rows.
|
|
|
|
def build_database_rows(enum)
|
|
|
|
enum.each_with_object([]) do |(object, _), rows|
|
|
|
|
rows << build(object) unless already_imported?(object)
|
|
|
|
end
|
|
|
|
end
|
|
|
|
|
|
|
|
# Bulk inserts the given rows into the database.
|
2019-03-02 22:35:43 +05:30
|
|
|
def bulk_insert(model, rows, batch_size: 100)
|
2018-03-17 18:26:18 +05:30
|
|
|
rows.each_slice(batch_size) do |slice|
|
2020-06-23 00:09:42 +05:30
|
|
|
Gitlab::Database.bulk_insert(model.table_name, slice) # rubocop:disable Gitlab/BulkInsert
|
2018-03-17 18:26:18 +05:30
|
|
|
end
|
|
|
|
end
|
|
|
|
end
|
|
|
|
end
|
|
|
|
end
|