Class: Couchbase::Management::QueryIndexManager
- Inherits:
-
Object
- Object
- Couchbase::Management::QueryIndexManager
- Defined in:
- lib/couchbase/management/query_index_manager.rb,
/code/couchbase-ruby-client/lib/couchbase/management/query_index_manager.rb
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.
388 389 390 |
# File 'lib/couchbase/management/query_index_manager.rb', line 388 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
501 502 503 504 505 506 507 |
# File 'lib/couchbase/management/query_index_manager.rb', line 501 def build_deferred_indexes(bucket_name, = Options::Query::BuildDeferredIndexes.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_build_deferred(bucket_name, .to_backend) end |
#create_index(bucket_name, index_name, fields, options = Options::Query::CreateIndex.new) ⇒ Object
Creates a new index
433 434 435 436 437 438 439 |
# File 'lib/couchbase/management/query_index_manager.rb', line 433 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
450 451 452 453 454 455 456 |
# File 'lib/couchbase/management/query_index_manager.rb', line 450 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
468 469 470 471 472 473 474 |
# File 'lib/couchbase/management/query_index_manager.rb', line 468 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
485 486 487 488 489 490 491 |
# File 'lib/couchbase/management/query_index_manager.rb', line 485 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
400 401 402 403 404 405 406 407 408 409 410 411 412 413 414 415 416 417 418 419 420 |
# File 'lib/couchbase/management/query_index_manager.rb', line 400 def get_all_indexes(bucket_name, = GetAllIndexOptions.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 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
518 519 520 521 522 523 524 525 526 527 528 529 530 531 532 533 534 535 536 537 538 539 540 541 |
# File 'lib/couchbase/management/query_index_manager.rb', line 518 def watch_indexes(bucket_name, index_names, timeout, = Options::Query::WatchIndexes.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 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 |