require 'nokogiri'
require 'active_record'

xml  = Nokogiri::XML(File.read("moulagen.xml"))
# search by CSS selector for ROW nodes
rows = xml.css("ROW")
puts "got #{rows.length} rows from xml"

objs = []
rows.each do |row|
  obj = {}
  # read record id
  obj["record_id"] = row["RECORDID"]
  # add child attributes
  row.children.each do |keyvalue|
    key = keyvalue.name
    val = keyvalue.children[0].text if keyvalue.children[0]
    obj[key] = val
  end
  objs.push obj
end

# http://stackoverflow.com/questions/1643875/how-to-use-activerecord-in-a-ruby-script-outside-rails#1643938
ActiveRecord::Base.establish_connection(
  adapter:  'mysql2', # or 'postgresql' or 'sqlite3' or 'oracle_enhanced'
  host:     'localhost',
  database: 'moulagen',
  username: 'root',
  password: ''
)

class Moulage < ActiveRecord::Base
  self.table_name = "moulagen"
end

# create table for moulagen
# delete existent tables with same name using 'force: true' (sounds a bit rough though^^)
ActiveRecord::Base.connection.create_table(:moulagen, force: true) do |t|
  # create column for each key
  objs[0].each do |k, v|
    t.column k.to_sym, :text
  end
end
puts "created table moulagen"

objs.each{ |obj| Moulage.create(obj) }

