Class: ClickhouseRuby::Types::Base Abstract

Inherits:
Object
  • Object
show all
Defined in:
lib/clickhouse_ruby/types/base.rb

Overview

This class is abstract.

Subclasses should override #cast, #deserialize, and #serialize

Base class for all ClickHouse types

Provides the interface for type conversion between Ruby and ClickHouse. Subclasses implement specific conversion logic.

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(name) ⇒ Base

Returns a new instance of Base.

Parameters:

  • name (String)

    the ClickHouse type name



17
18
19
# File 'lib/clickhouse_ruby/types/base.rb', line 17

def initialize(name)
  @name = name
end

Instance Attribute Details

#nameString (readonly)

Returns the ClickHouse type name.

Returns:

  • (String)

    the ClickHouse type name



14
15
16
# File 'lib/clickhouse_ruby/types/base.rb', line 14

def name
  @name
end

Instance Method Details

#==(other) ⇒ Boolean Also known as: eql?

Equality comparison

Parameters:

  • other (Base)

    another type

Returns:



63
64
65
# File 'lib/clickhouse_ruby/types/base.rb', line 63

def ==(other)
  other.is_a?(Base) && other.name == name
end

#cast(value) ⇒ Object

Converts a Ruby value to the appropriate type for this ClickHouse column

Parameters:

  • value (Object)

    the value to convert

Returns:

  • (Object)

    the converted value



25
26
27
# File 'lib/clickhouse_ruby/types/base.rb', line 25

def cast(value)
  value
end

#deserialize(value) ⇒ Object

Converts a value from ClickHouse response format to Ruby

Parameters:

  • value (Object)

    the value from ClickHouse

Returns:

  • (Object)

    the Ruby value



33
34
35
# File 'lib/clickhouse_ruby/types/base.rb', line 33

def deserialize(value)
  value
end

#hashInteger

Hash code for use in hash keys

Returns:



72
73
74
# File 'lib/clickhouse_ruby/types/base.rb', line 72

def hash
  name.hash
end

#nullable?Boolean

Returns whether NULL values are allowed

Returns:



48
49
50
# File 'lib/clickhouse_ruby/types/base.rb', line 48

def nullable?
  false
end

#serialize(value) ⇒ String

Converts a Ruby value to ClickHouse SQL literal format

Parameters:

  • value (Object)

    the Ruby value

Returns:

  • (String)

    the SQL literal



41
42
43
# File 'lib/clickhouse_ruby/types/base.rb', line 41

def serialize(value)
  value.to_s
end

#to_sString

Returns the ClickHouse type string

Returns:

  • (String)

    the type string



55
56
57
# File 'lib/clickhouse_ruby/types/base.rb', line 55

def to_s
  name
end