Sha256: 876936d20b8b2fe4debcf46d7e730425a3ffc2e16375bea9b616e6ad0ef67196

Contents?: true

Size: 509 Bytes

Versions: 2

Compression:

Stored size: 509 Bytes

Contents

module BqFactory
  class QueryBuilder < Array
    attr_reader :schema

    def initialize(schema)
      @schema = schema
    end

    def build(rows)
      rows = [rows] unless rows.is_a? Array
      records = rows.flatten.map { |row| Record.new(schema, row) }
      build_query(records)
    end

    private

    def build_query(records)
      %{SELECT * FROM #{records.map { |record| build_subquery(record) }.join(', ')}}
    end

    def build_subquery(record)
      "(#{record.to_sql})"
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
bq_factory-0.2.0 lib/bq_factory/query_builder.rb
bq_factory-0.1.1 lib/bq_factory/query_builder.rb