Sha256: f5c7c6b801aaa4644c780d78d8c4c3b672c2f77672bcccc8bbfff610f2931891

Contents?: true

Size: 1.58 KB

Versions: 8

Compression:

Stored size: 1.58 KB

Contents

module LegacyData
  class TableDefinition
    attr_accessor :class_name, :table_name, :columns, :primary_key, :relations, :constraints

    def initialize(options)
      options.each {|key, value| self.send("#{key}=", value) }
    end
    
    def [] key
      self.send(key)
    end
    
    def to_hash
      hash = {}
      [:class_name, :table_name, :columns, :primary_key, :relations, :constraints].each {|field| hash[field] = self.send(field) }
      hash
    end
    
    def join_table?
      (columns.size == 2) and relations[:belongs_to] and (relations[:belongs_to].values.map {|value| value[:foreign_key]}.map(&:to_s) == columns)
    end
    
    def belongs_to_relations
      return {} if relations.nil? or relations[:belongs_to].nil?
      relations[:belongs_to]
    end

    def belongs_to_tables
      return [] if belongs_to_relations == {}
      belongs_to_relations.keys
    end
    
    def convert_has_many_to_habtm(join_table)
      other_table_name = join_table.belongs_to_tables.detect {|table_name| table_name != self.table_name}
      relations[:has_and_belongs_to_many][other_table_name] = { :foreign_key            =>join_table.belongs_to_relations[table_name][:foreign_key], 
                                                                :association_foreign_key=>join_table.belongs_to_relations[other_table_name][:foreign_key],
                                                                :join_table             =>join_table.table_name.to_sym }
      relations[:has_many].delete(join_table.table_name)                                                          
    end
  end
end

Version data entries

8 entries across 8 versions & 1 rubygems

Version Path
legacy_data-0.1.8 lib/legacy_data/table_definition.rb
legacy_data-0.1.7 lib/legacy_data/table_definition.rb
legacy_data-0.1.6 lib/legacy_data/table_definition.rb
legacy_data-0.1.5 lib/legacy_data/table_definition.rb
legacy_data-0.1.4 lib/legacy_data/table_definition.rb
legacy_data-0.1.2 lib/legacy_data/table_definition.rb
legacy_data-0.1.1 lib/legacy_data/table_definition.rb
legacy_data-0.1.0 lib/legacy_data/table_definition.rb