Class: Couchbase::Protostellar::ResponseConverter::Query Private

Inherits:
Object
  • Object
show all
Defined in:
lib/couchbase/protostellar/response_converter/query.rb

Overview

This class is part of a private API. You should avoid using this class if possible, as it may be removed or be changed in the future.

API:

  • private

Constant Summary collapse

STATUS_MAP =

This constant is part of a private API. You should avoid using this constant if possible, as it may be removed or be changed in the future.

API:

  • private

{
  :STATUS_RUNNING => :running,
  :STATUS_SUCCESS => :success,
  :STATUS_ERRORS => :errors,
  :STATUS_COMPLETED => :completed,
  :STATUS_STOPPED => :stopped,
  :STATUS_TIMEOUT => :timeout,
  :STATUS_CLOSED => :closed,
  :STATUS_FATAL => :fatal,
  :STATUS_ABORTED => :aborted,
  :STATUS_UNKNOWN => :unknown,
}.freeze

Class Method Summary collapse

Class Method Details

.convert_query_metadata(proto_metadata) ⇒ Object

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.

API:

  • private



49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
# File 'lib/couchbase/protostellar/response_converter/query.rb', line 49

def self.()
  Couchbase::Cluster::.new do |meta|
    meta.status = STATUS_MAP[.status]
    meta.request_id = .request_id
    meta.client_context_id = .client_context_id
    meta.signature = JSON.parse(.signature) unless .signature.nil? || .signature.empty?
    meta.profile = JSON.parse(.profile) unless .profile.nil? || .profile.empty?
    meta.metrics = if .has_metrics?
                     convert_query_metrics(.metrics)
                   else
                     Couchbase::Cluster::QueryMetrics.new
                   end
    meta.warnings = .warnings.map { |w| convert_query_warning(w) } unless .warnings.empty?
  end
end

.convert_query_metrics(proto_metrics) ⇒ Object

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.

API:

  • private



69
70
71
72
73
74
75
76
77
78
79
80
# File 'lib/couchbase/protostellar/response_converter/query.rb', line 69

def self.convert_query_metrics(proto_metrics)
  Couchbase::Cluster::QueryMetrics.new do |metrics|
    metrics.elapsed_time = proto_metrics.elapsed_time.nanos + (proto_metrics.elapsed_time.seconds * (10**9))
    metrics.execution_time = proto_metrics.execution_time.nanos + (proto_metrics.execution_time.seconds * (10**9))
    metrics.result_count = proto_metrics.result_count
    metrics.result_size = proto_metrics.result_size
    metrics.mutation_count = proto_metrics.mutation_count
    metrics.sort_count = proto_metrics.sort_count
    metrics.error_count = proto_metrics.error_count
    metrics.warning_count = proto_metrics.warning_count
  end
end

.convert_query_warning(proto_warning) ⇒ Object

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.

API:

  • private



65
66
67
# File 'lib/couchbase/protostellar/response_converter/query.rb', line 65

def self.convert_query_warning(proto_warning)
  Couchbase::Cluster::QueryWarning.new(proto_warning.code, proto_warning.message)
end

.to_query_result(resps) ⇒ Object

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.

API:

  • private



38
39
40
41
42
43
44
45
46
47
# File 'lib/couchbase/protostellar/response_converter/query.rb', line 38

def self.to_query_result(resps)
  Couchbase::Cluster::QueryResult.new do |res|
    rows = []
    resps.each do |resp|
      rows.push(*resp.rows)
      res. = (resp.) unless resp..nil?
    end
    res.instance_variable_set(:@rows, rows)
  end
end