Class: Relationize::Relationizer

Inherits:
Object
  • Object
show all
Defined in:
lib/relationize/relationizer.rb

Overview

Relationizer Base Class

Direct Known Subclasses

BqRelationizer, PgRelationizer

Defined Under Namespace

Classes: InvalidElementError, InvalidSchemaError, ReasonlessTypeError

Instance Method Summary collapse

Constructor Details

#initialize(tuples, schema, name) ⇒ Relationizer

Returns a new instance of Relationizer.

Parameters:

  • tuples: (Array)

    Expected to two dimentional Array. For example ‘[[1, 2], [3, 4]]`

  • schema: (Hash)

    For example ‘{ id: :integer, amount: :integer}`

  • name: (String)

    Relation name



15
16
17
18
19
20
21
22
23
24
25
# File 'lib/relationize/relationizer.rb', line 15

def initialize(tuples, schema, name)
  unless tuples.all? { |o| o.is_a?(Array) }
    raise InvalidElementError.new("Element should be Array")
  end

  unless tuples.map(&:length).all? { |length| length == schema.length }
    raise InvalidSchemaError.new("Tuple size is expected #{schema.length}.")
  end
  
  @tuples, @name, @columns, @types = tuples, name, schema.keys, schema.values
end