Class: ChConnect::Response

Inherits:
Data
  • Object
show all
Includes:
Enumerable
Defined in:
lib/ch_connect/response.rb

Overview

Immutable response object containing query results.

Examples:

response = conn.query("SELECT id, name FROM users")
response.columns   # => [:id, :name]
response.rows      # => [[1, "Alice"], [2, "Bob"]]
response.each { |row| puts row[:name] }

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(columns: [], types: [], rows: [], summary: nil) ⇒ Response

Returns a new instance of Response.

Parameters:

  • columns (Array<Symbol>) (defaults to: [])

    column names

  • types (Array<Symbol>) (defaults to: [])

    column types

  • rows (Array<Array>) (defaults to: [])

    row data

  • summary (Hash, nil) (defaults to: nil)

    ClickHouse query summary with symbol keys



18
19
20
# File 'lib/ch_connect/response.rb', line 18

def initialize(columns: [], types: [], rows: [], summary: nil)
  super
end

Instance Attribute Details

#columnsObject (readonly)

Returns the value of attribute columns

Returns:

  • (Object)

    the current value of columns



11
12
13
# File 'lib/ch_connect/response.rb', line 11

def columns
  @columns
end

#rowsObject (readonly)

Returns the value of attribute rows

Returns:

  • (Object)

    the current value of rows



11
12
13
# File 'lib/ch_connect/response.rb', line 11

def rows
  @rows
end

#summaryObject (readonly)

Returns the value of attribute summary

Returns:

  • (Object)

    the current value of summary



11
12
13
# File 'lib/ch_connect/response.rb', line 11

def summary
  @summary
end

#typesObject (readonly)

Returns the value of attribute types

Returns:

  • (Object)

    the current value of types



11
12
13
# File 'lib/ch_connect/response.rb', line 11

def types
  @types
end

Instance Method Details

#each {|Hash| ... } ⇒ Enumerator

Iterates over rows as hashes with symbol keys.

Yields:

  • (Hash)

    each row as a hash

Returns:

  • (Enumerator)

    if no block given



25
26
27
28
29
# File 'lib/ch_connect/response.rb', line 25

def each
  return to_enum(:each) unless block_given?

  rows.each { |row| yield columns.zip(row).to_h }
end