#!/usr/bin/env ruby -rubygems
%w(active_record camping).each { |lib| require lib }

Camping.goes :Arg

module Arg
  def self.create
    Arg::Models::Base.establish_connection( :adapter=>'sqlite3', 
                                            :database=>'arg.db' )
    Arg::Models.create_schema :assume => (Arg::Models::Assembly.table_exists? ? 1.0 : 0.0)
  end
end

module Arg::Models
  class Assembly < Base
    has_and_belongs_to_many :parts
  end

  class Part < Base
    has_and_belongs_to_many :assemblies
  end

  class CreateArg < V 1.0
    def self.up
      create_table Assembly.table_name do |t| 
        t.integer :id, :null=>false
        t.string :name
      end

      create_table Part.table_name do |t| 
        t.integer :id, :null=>false
        t.string :name
      end

      create_table :arg_assemblies_parts, :id=>false do |t| 
        t.references :assembly
        t.references :part
      end
    end

    def self.down
      drop_table :arg_assemblies_parts
      drop_table Assembly.table_name
      drop_table Part.table_name
    end
  end
end