22 lines
		
	
	
		
			748 B
		
	
	
	
		
			Ruby
		
	
	
	
			
		
		
	
	
			22 lines
		
	
	
		
			748 B
		
	
	
	
		
			Ruby
		
	
	
	
| # frozen_string_literal: true
 | |
| 
 | |
| module Gitlab
 | |
|   module Import
 | |
|     module DatabaseHelpers
 | |
|       # Inserts a raw row and returns the ID of the inserted row.
 | |
|       #
 | |
|       # attributes - The attributes/columns to set.
 | |
|       # relation - An ActiveRecord::Relation to use for finding the table name
 | |
|       def insert_and_return_id(attributes, relation)
 | |
|         # We use bulk_insert here so we can bypass any queries executed by
 | |
|         # callbacks or validation rules, as doing this wouldn't scale when
 | |
|         # importing very large projects.
 | |
|         result = ApplicationRecord # rubocop:disable Gitlab/BulkInsert
 | |
|                  .legacy_bulk_insert(relation.table_name, [attributes], return_ids: true)
 | |
| 
 | |
|         result.first
 | |
|       end
 | |
|     end
 | |
|   end
 | |
| end
 |