Method: Dataflow::Adapters::MongoDbAdapter#create_indexes
- Defined in:
- lib/dataflow/adapters/mongo_db_adapter.rb
#create_indexes(dataset: nil, type: :all, drop_retry_on_error: true) ⇒ Object
Create the indexes on this dataset.
191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 |
# File 'lib/dataflow/adapters/mongo_db_adapter.rb', line 191 def create_indexes(dataset: nil, type: :all, drop_retry_on_error: true) dataset ||= write_dataset_name return unless settings.indexes.present? indexes = (settings.indexes || []) case type when :unique_only indexes = indexes.select { |idx| idx['unique'] } when :non_unique_only indexes = indexes.reject { |idx| idx['unique'] } end indexes = indexes.map { |x| format_index(x) } client[dataset].indexes.create_many(indexes) rescue Mongo::Error::OperationFailure => e raise e unless drop_retry_on_error client[dataset].indexes.drop_all create_indexes(drop_retry_on_error: false) end |