Sha256: 7db469c4aaccd094a1aa8f0500d8f5b833f58e52fdf032fdacd189fd66f157be

Contents?: true

Size: 1.24 KB

Versions: 5

Compression:

Stored size: 1.24 KB

Contents

# frozen_string_literal: true, encoding: ASCII-8BIT

require 'couchbase-orm/proxies/results_proxy'

module CouchbaseOrm
    class N1qlProxy
        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

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

Version data entries

5 entries across 5 versions & 1 rubygems

Version Path
couchbase-orm-2.0.4 lib/couchbase-orm/proxies/n1ql_proxy.rb
couchbase-orm-2.0.3 lib/couchbase-orm/proxies/n1ql_proxy.rb
couchbase-orm-2.0.2 lib/couchbase-orm/proxies/n1ql_proxy.rb
couchbase-orm-2.0.1 lib/couchbase-orm/proxies/n1ql_proxy.rb
couchbase-orm-2.0.0 lib/couchbase-orm/proxies/n1ql_proxy.rb