Class: CouchbaseOrm::N1qlProxy

Inherits:
Object
  • Object
show all
Defined in:
lib/couchbase-orm/proxies/n1ql_proxy.rb

Instance Method Summary collapse

Constructor Details

#initialize(proxyfied) ⇒ N1qlProxy

Returns a new instance of N1qlProxy.



8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
# File 'lib/couchbase-orm/proxies/n1ql_proxy.rb', line 8

def initialize(proxyfied)
  @proxyfied = proxyfied

  self.class.define_method(:results) do |*_params, &block|
    @results = nil if @current_query != self.to_s
    @current_query = self.to_s
    return @results if @results

    CouchbaseOrm.logger.debug { 'Query - ' + self.to_s }

    results = @proxyfied.rows
    results = results.map { |r| block.call(r) } if block
    @results = ResultsProxy.new(results.to_a)
  end

  self.class.define_method(:to_s) do
    @proxyfied.to_s.tr("\n", ' ')
  end

  proxyfied.public_methods.each do |method|
    next if self.public_methods.include?(method)

    self.class.define_method(method) do |*params, &block|
      ret = @proxyfied.send(method, *params, &block)
      ret.is_a?(@proxyfied.class) ? self : ret
    end
  end
end

Dynamic Method Handling

This class handles dynamic methods through the method_missing method

#method_missing(m, *args, &block) ⇒ Object



37
38
39
# File 'lib/couchbase-orm/proxies/n1ql_proxy.rb', line 37

def method_missing(m, *args, &block)
  self.results.send(m, *args, &block)
end