26 lines
725 B
Ruby
26 lines
725 B
Ruby
|
# 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.
|
||
|
def bulk_insert(model, rows, batch_size: 100)
|
||
|
rows.each_slice(batch_size) do |slice|
|
||
|
Gitlab::Database.bulk_insert(model.table_name, slice)
|
||
|
end
|
||
|
end
|
||
|
end
|
||
|
end
|
||
|
end
|