Class: Couchbase::Management::QueryIndexManager
- Inherits:
-
Object
- Object
- Couchbase::Management::QueryIndexManager
- Defined in:
- lib/couchbase/management/query_index_manager.rb,
/Users/sergey.auseyau/code/couchbase-ruby-client/lib/couchbase/management/query_index_manager.rb more...
Instance Method Summary collapse
-
#build_deferred_indexes(bucket_name, options = Options::Query::BuildDeferredIndexes.new) ⇒ Object
Build all indexes which are currently in deferred state.
-
#create_index(bucket_name, index_name, fields, options = Options::Query::CreateIndex.new) ⇒ Object
Creates a new index.
-
#create_primary_index(bucket_name, options = Options::Query::CreatePrimaryIndex.new) ⇒ Object
Creates new primary index.
-
#drop_index(bucket_name, index_name, options = Options::Query::DropIndex.new) ⇒ Object
Drops the index.
-
#drop_primary_index(bucket_name, options = Options::Query::DropPrimaryIndex.new) ⇒ Object
Drops the primary index.
-
#get_all_indexes(bucket_name, options = GetAllIndexOptions.new) ⇒ Array<QueryIndex>
Fetches all indexes from the server.
-
#initialize(backend) ⇒ QueryIndexManager
constructor
A new instance of QueryIndexManager.
-
#watch_indexes(bucket_name, index_names, timeout, options = Options::Query::WatchIndexes.new) ⇒ Object
Polls indexes until they are online.
Constructor Details
#initialize(backend) ⇒ QueryIndexManager
Returns a new instance of QueryIndexManager.
333 334 335 |
# File 'lib/couchbase/management/query_index_manager.rb', line 333 def initialize(backend) @backend = backend end |
Instance Method Details
#build_deferred_indexes(bucket_name, options = Options::Query::BuildDeferredIndexes.new) ⇒ Object
Build all indexes which are currently in deferred state
442 443 444 |
# File 'lib/couchbase/management/query_index_manager.rb', line 442 def build_deferred_indexes(bucket_name, = Options::Query::BuildDeferredIndexes.new) @backend.query_index_build_deferred(bucket_name, .to_backend) end |
#create_index(bucket_name, index_name, fields, options = Options::Query::CreateIndex.new) ⇒ Object
Creates a new index
374 375 376 377 378 379 380 |
# File 'lib/couchbase/management/query_index_manager.rb', line 374 def create_index(bucket_name, index_name, fields, = Options::Query::CreateIndex.new) unless .scope_name.nil? && .collection_name.nil? warn "The attributes 'scope_name' and 'collection_name' have been deprecated. Use 'collection.query_indexes' instead" end @backend.query_index_create(bucket_name, index_name, fields, .to_backend) end |
#create_primary_index(bucket_name, options = Options::Query::CreatePrimaryIndex.new) ⇒ Object
Creates new primary index
391 392 393 394 395 396 397 |
# File 'lib/couchbase/management/query_index_manager.rb', line 391 def create_primary_index(bucket_name, = Options::Query::CreatePrimaryIndex.new) unless .scope_name.nil? && .collection_name.nil? warn "The attributes 'scope_name' and 'collection_name' have been deprecated. Use 'collection.query_indexes' instead" end @backend.query_index_create_primary(bucket_name, .to_backend) end |
#drop_index(bucket_name, index_name, options = Options::Query::DropIndex.new) ⇒ Object
Drops the index
409 410 411 412 413 414 415 |
# File 'lib/couchbase/management/query_index_manager.rb', line 409 def drop_index(bucket_name, index_name, = Options::Query::DropIndex.new) unless .scope_name.nil? && .collection_name.nil? warn "The attributes 'scope_name' and 'collection_name' have been deprecated. Use 'collection.query_indexes' instead" end @backend.query_index_drop(bucket_name, index_name, .to_backend) end |
#drop_primary_index(bucket_name, options = Options::Query::DropPrimaryIndex.new) ⇒ Object
Drops the primary index
426 427 428 429 430 431 432 |
# File 'lib/couchbase/management/query_index_manager.rb', line 426 def drop_primary_index(bucket_name, = Options::Query::DropPrimaryIndex.new) unless .scope_name.nil? && .collection_name.nil? warn "The attributes 'scope_name' and 'collection_name' have been deprecated. Use 'collection.query_indexes' instead" end @backend.query_index_drop_primary(bucket_name, .to_backend) end |
#get_all_indexes(bucket_name, options = GetAllIndexOptions.new) ⇒ Array<QueryIndex>
Fetches all indexes from the server
345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 |
# File 'lib/couchbase/management/query_index_manager.rb', line 345 def get_all_indexes(bucket_name, = GetAllIndexOptions.new) res = @backend.query_index_get_all(bucket_name, .to_backend) res[:indexes].map do |idx| QueryIndex.new do |index| index.name = idx[:name] index.is_primary = idx[:is_primary] index.type = idx[:type] index.state = idx[:state] index.bucket = idx[:bucket_name] index.scope = idx[:scope_name] index.collection = idx[:collection_name] index.index_key = idx[:index_key] index.condition = idx[:condition] index.partition = idx[:partition] end end end |
#watch_indexes(bucket_name, index_names, timeout, options = Options::Query::WatchIndexes.new) ⇒ Object
Polls indexes until they are online
455 456 457 458 459 460 461 462 463 464 465 466 467 468 469 470 471 472 473 474 |
# File 'lib/couchbase/management/query_index_manager.rb', line 455 def watch_indexes(bucket_name, index_names, timeout, = Options::Query::WatchIndexes.new) index_names.append("#primary") if .watch_primary interval_millis = 50 deadline = Time.now + (Utils::Time.extract_duration(timeout) * 0.001) while Time.now <= deadline get_all_opts = Options::Query::GetAllIndexes.new(timeout: ((deadline - Time.now) * 1000).round) indexes = get_all_indexes(bucket_name, get_all_opts).select { |idx| index_names.include? idx.name } indexes_not_found = index_names - indexes.map(&:name) raise Error::IndexNotFound, "Failed to find the indexes: #{indexes_not_found.join(', ')}" unless indexes_not_found.empty? all_online = indexes.all? { |idx| idx.state == :online } return if all_online sleep(interval_millis / 1000) interval_millis += 500 interval_millis = 1000 if interval_millis > 1000 end raise Error::UnambiguousTimeout, "Failed to find all indexes online within the allotted time" end |