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.



7
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
# File 'lib/couchbase-orm/proxies/n1ql_proxy.rb', line 7

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



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

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