Sha256: 543c9e7aa3539286521e79b9a53e5eda2a1fd791a0cb847353a71a24b5fc87a6

Contents?: true

Size: 962 Bytes

Versions: 4

Compression:

Stored size: 962 Bytes

Contents

module Alf
  module Sequel
    class Cog
      include Alf::Compiler::Cog
      include Enumerable

      def initialize(expr, compiler, sexpr)
        super(expr, compiler)
        @sexpr = sexpr
      end
      attr_reader :sexpr

      def should_be_reused?
        sexpr.should_be_reused?
      end

      def cog_orders
        [ sexpr.ordering ].compact
      end

      def dataset
        @dataset ||= Translator.new(compiler.connection).call(sexpr)
      end

      def to_sql(buffer = "")
        buffer << dataset.sql
        buffer
      end

      def to_s
        to_sql
      end

      def inspect
        "Alf::Sequel::Cog(#{to_sql})"
      end

      def each(&bl)
        return to_enum unless block_given?
        if sexpr.is_table_dee?
          Alf::Engine::Clip.new(dataset, AttrList[:is_table_dee], true).each(&bl)
        else
          dataset.each(&bl)
        end
      end

    end # class Cog
  end # module Sequel
end # module Alf

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
alf-sequel-0.16.3 lib/alf/sequel/cog.rb
alf-sequel-0.16.2 lib/alf/sequel/cog.rb
alf-sequel-0.16.1 lib/alf/sequel/cog.rb
alf-sequel-0.16.0 lib/alf/sequel/cog.rb