Sha256: 6cde90cbb982ce8925f8a2ea4f8b0d9e6d56e6bbbce0d0b54845fe974ea1657d

Contents?: true

Size: 743 Bytes

Versions: 6

Compression:

Stored size: 743 Bytes

Contents

require_relative '../prepared_statement'

module ActiveHouse
  module Querying
    module Select
      extend ActiveSupport::Concern

      included do
        private :build_select_query_part
      end

      def build_select_query_part
        if !values[:fields].empty?
          "SELECT\n#{values[:fields].join(",\n")}"
        else
          'SELECT *'
        end
      end

      def initial_values
        super.merge fields: []
      end

      def select(*fields)
        dup.select!(*fields)
      end

      def select!(*fields)
        formatted_fields = ActiveHouse::PreparedStatement.format_fields(model_class, fields)
        values[:fields] = (values[:fields] + formatted_fields).uniq
        self
      end
    end
  end
end

Version data entries

6 entries across 6 versions & 1 rubygems

Version Path
active_house-0.6.3 lib/active_house/querying/select.rb
active_house-0.6.2 lib/active_house/querying/select.rb
active_house-0.6.1 lib/active_house/querying/select.rb
active_house-0.6.0 lib/active_house/querying/select.rb
active_house-0.5.1 lib/active_house/querying/select.rb
active_house-0.5.0 lib/active_house/querying/select.rb