Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- require 'rubygems'
- require 'dm-core'
- Store.auto_upgrade!
- Product.auto_upgrade!
- Inventory.auto_upgrade!
- Dir.glob("sqlite/*.db").reverse.each do |db|
- DataMapper.setup(:old, "sqlite3://#{Dir.pwd}/#{db}")
- OldStore.all.each{|s|s.moveit}
- OldProduct.all.each{|p|p.moveit}
- i=0
- total = repository(:old).adapter.select('select count(*) from store_product_inventories;')[0].to_i
- until(i>total) do
- qs = "INSERT INTO inventories ( `store_id`, `product_id`, `quantity`, `date` ) VALUES "
- OldInventory.all(:limit=>10000,:offset=>i).each do |item|
- qs << "('#{item.store_no}','#{item.product_no}','#{item.quantity}','#{item.updated_on}'),"
- end
- repository.adapter.execute(qs.chop<<';')
- i=i+10000
- puts "#{((i.to_f/total.to_f)*100).to_i} % done"
- qs = nil
- end
- end
- # new models
- DataMapper.setup(:default, 'mysql://root@localhost/lcbo')
- class Store
- include DataMapper::Resource
- property :id, Serial
- property :latitude, Float
- property :longitude, Float
- property :name, String, :length=>50
- property :address_line_1, String, :length=>40
- property :address_line_2, String, :length=>40
- property :postal_code, String, :length=>6
- property :city, String, :length=>25
- property :telephone, String, :length=>14
- property :fax, String, :length=>14
- property :inventory_count, Integer
- property :products_count, Integer
- property :sunday_open, Integer
- property :sunday_close, Integer
- property :monday_open, Integer
- property :monday_close, Integer
- property :tuesday_open, Integer
- property :tuesday_close, Integer
- property :wednesday_open, Integer
- property :wednesday_close, Integer
- property :thursday_open, Integer
- property :thursday_close, Integer
- property :friday_open, Integer
- property :friday_close, Integer
- property :saturday_open, Integer
- property :saturday_close, Integer
- def store_no=(val) self.attribute_set(:id,val); end
- end
- class Product
- include DataMapper::Resource
- property :id, Serial
- property :price_in_cents, Integer
- property :name, String, :length=>100
- property :stock_type, String, :length=>10
- property :primary_category, String, :length=>32
- property :secondary_category, String, :length=>32
- property :origin, String, :length=>60
- property :package, String, :length=>32
- property :alcohol_content, Integer
- property :sugar_content, String, :length=>5
- property :producer_name, String, :length=>80
- property :inventory_count, Integer
- def product_no=(val) self.attribute_set(:id,val); end
- end
- class Inventory
- include DataMapper::Resource
- property :id, Serial
- property :store_id, Integer, :index=>true
- property :product_id, Integer, :index=>true
- property :quantity, Integer
- property :date, Date, :index=>true
- belongs_to :store
- belongs_to :product
- def product_no=(val) self.attribute_set(:product_id,val); end
- def store_no=(val) self.attribute_set(:store_id,val); end
- def updated_on=(val) self.attribute_set(:date,val); end
- end
- # old models
- class OldStore
- include DataMapper::Resource
- def self.default_repository_name
- :old
- end
- storage_names[:old] = 'stores'
- property :store_no, Integer, :key=>true
- property :latitude, Float
- property :longitude, Float
- property :name, String, :length=>50
- property :address_line_1, String, :length=>40
- property :address_line_2, String, :length=>40
- property :postal_code, String, :length=>6
- property :city, String, :length=>25
- property :telephone, String, :length=>14
- property :fax, String, :length=>14
- property :inventory_count, Integer
- property :products_count, Integer
- property :sunday_open, Integer
- property :sunday_close, Integer
- property :monday_open, Integer
- property :monday_close, Integer
- property :tuesday_open, Integer
- property :tuesday_close, Integer
- property :wednesday_open, Integer
- property :wednesday_close, Integer
- property :thursday_open, Integer
- property :thursday_close, Integer
- property :friday_open, Integer
- property :friday_close, Integer
- property :saturday_open, Integer
- property :saturday_close, Integer
- def moveit
- Store.create(self.attributes) unless Store.get(self.store_no)
- end
- end
- class OldProduct
- include DataMapper::Resource
- def self.default_repository_name
- :old
- end
- storage_names[:old] = 'products'
- property :product_no, Integer, :key=>true
- property :price_in_cents, Integer
- property :name, String, :length=>100
- property :stock_type, String, :length=>10
- property :primary_category, String, :length=>32
- property :secondary_category, String, :length=>32
- property :origin, String, :length=>60
- property :package, String, :length=>32
- property :alcohol_content, Integer
- property :sugar_content, String, :length=>3
- property :producer_name, String, :length=>80
- property :inventory_count, Integer
- def moveit
- Product.create(self.attributes) unless Product.get(self.product_no)
- end
- end
- class OldInventory
- include DataMapper::Resource
- def self.default_repository_name
- :old
- end
- storage_names[:old] = 'store_product_inventories'
- property :store_no, Integer, :key=>true
- property :product_no, Integer, :key=>true
- property :quantity, Integer
- property :updated_on, String
- end
Add Comment
Please, Sign In to add comment