Guest User

Untitled

a guest
May 27th, 2018
77
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 5.10 KB | None | 0 0
  1. require 'rubygems'
  2. require 'dm-core'
  3.  
  4. Store.auto_upgrade!
  5. Product.auto_upgrade!
  6. Inventory.auto_upgrade!
  7.  
  8. Dir.glob("sqlite/*.db").reverse.each do |db|
  9.  
  10. DataMapper.setup(:old, "sqlite3://#{Dir.pwd}/#{db}")
  11. OldStore.all.each{|s|s.moveit}
  12. OldProduct.all.each{|p|p.moveit}
  13.  
  14. i=0
  15. total = repository(:old).adapter.select('select count(*) from store_product_inventories;')[0].to_i
  16. until(i>total) do
  17. qs = "INSERT INTO inventories ( `store_id`, `product_id`, `quantity`, `date` ) VALUES "
  18. OldInventory.all(:limit=>10000,:offset=>i).each do |item|
  19. qs << "('#{item.store_no}','#{item.product_no}','#{item.quantity}','#{item.updated_on}'),"
  20. end
  21. repository.adapter.execute(qs.chop<<';')
  22. i=i+10000
  23. puts "#{((i.to_f/total.to_f)*100).to_i} % done"
  24. qs = nil
  25. end
  26. end
  27.  
  28.  
  29.  
  30. # new models
  31.  
  32. DataMapper.setup(:default, 'mysql://root@localhost/lcbo')
  33.  
  34. class Store
  35. include DataMapper::Resource
  36.  
  37. property :id, Serial
  38. property :latitude, Float
  39. property :longitude, Float
  40. property :name, String, :length=>50
  41. property :address_line_1, String, :length=>40
  42. property :address_line_2, String, :length=>40
  43. property :postal_code, String, :length=>6
  44. property :city, String, :length=>25
  45. property :telephone, String, :length=>14
  46. property :fax, String, :length=>14
  47. property :inventory_count, Integer
  48. property :products_count, Integer
  49. property :sunday_open, Integer
  50. property :sunday_close, Integer
  51. property :monday_open, Integer
  52. property :monday_close, Integer
  53. property :tuesday_open, Integer
  54. property :tuesday_close, Integer
  55. property :wednesday_open, Integer
  56. property :wednesday_close, Integer
  57. property :thursday_open, Integer
  58. property :thursday_close, Integer
  59. property :friday_open, Integer
  60. property :friday_close, Integer
  61. property :saturday_open, Integer
  62. property :saturday_close, Integer
  63.  
  64. def store_no=(val) self.attribute_set(:id,val); end
  65.  
  66. end
  67.  
  68. class Product
  69. include DataMapper::Resource
  70.  
  71. property :id, Serial
  72. property :price_in_cents, Integer
  73. property :name, String, :length=>100
  74. property :stock_type, String, :length=>10
  75. property :primary_category, String, :length=>32
  76. property :secondary_category, String, :length=>32
  77. property :origin, String, :length=>60
  78. property :package, String, :length=>32
  79. property :alcohol_content, Integer
  80. property :sugar_content, String, :length=>5
  81. property :producer_name, String, :length=>80
  82. property :inventory_count, Integer
  83.  
  84. def product_no=(val) self.attribute_set(:id,val); end
  85.  
  86. end
  87.  
  88. class Inventory
  89. include DataMapper::Resource
  90.  
  91. property :id, Serial
  92. property :store_id, Integer, :index=>true
  93. property :product_id, Integer, :index=>true
  94. property :quantity, Integer
  95. property :date, Date, :index=>true
  96.  
  97. belongs_to :store
  98. belongs_to :product
  99.  
  100. def product_no=(val) self.attribute_set(:product_id,val); end
  101. def store_no=(val) self.attribute_set(:store_id,val); end
  102. def updated_on=(val) self.attribute_set(:date,val); end
  103.  
  104. end
  105.  
  106.  
  107. # old models
  108.  
  109. class OldStore
  110. include DataMapper::Resource
  111. def self.default_repository_name
  112. :old
  113. end
  114. storage_names[:old] = 'stores'
  115.  
  116. property :store_no, Integer, :key=>true
  117. property :latitude, Float
  118. property :longitude, Float
  119. property :name, String, :length=>50
  120. property :address_line_1, String, :length=>40
  121. property :address_line_2, String, :length=>40
  122. property :postal_code, String, :length=>6
  123. property :city, String, :length=>25
  124. property :telephone, String, :length=>14
  125. property :fax, String, :length=>14
  126. property :inventory_count, Integer
  127. property :products_count, Integer
  128. property :sunday_open, Integer
  129. property :sunday_close, Integer
  130. property :monday_open, Integer
  131. property :monday_close, Integer
  132. property :tuesday_open, Integer
  133. property :tuesday_close, Integer
  134. property :wednesday_open, Integer
  135. property :wednesday_close, Integer
  136. property :thursday_open, Integer
  137. property :thursday_close, Integer
  138. property :friday_open, Integer
  139. property :friday_close, Integer
  140. property :saturday_open, Integer
  141. property :saturday_close, Integer
  142.  
  143. def moveit
  144. Store.create(self.attributes) unless Store.get(self.store_no)
  145. end
  146.  
  147. end
  148.  
  149.  
  150. class OldProduct
  151. include DataMapper::Resource
  152. def self.default_repository_name
  153. :old
  154. end
  155. storage_names[:old] = 'products'
  156.  
  157. property :product_no, Integer, :key=>true
  158. property :price_in_cents, Integer
  159. property :name, String, :length=>100
  160. property :stock_type, String, :length=>10
  161. property :primary_category, String, :length=>32
  162. property :secondary_category, String, :length=>32
  163. property :origin, String, :length=>60
  164. property :package, String, :length=>32
  165. property :alcohol_content, Integer
  166. property :sugar_content, String, :length=>3
  167. property :producer_name, String, :length=>80
  168. property :inventory_count, Integer
  169.  
  170. def moveit
  171. Product.create(self.attributes) unless Product.get(self.product_no)
  172. end
  173.  
  174. end
  175.  
  176.  
  177. class OldInventory
  178. include DataMapper::Resource
  179. def self.default_repository_name
  180. :old
  181. end
  182. storage_names[:old] = 'store_product_inventories'
  183.  
  184. property :store_no, Integer, :key=>true
  185. property :product_no, Integer, :key=>true
  186. property :quantity, Integer
  187. property :updated_on, String
  188.  
  189. end
Add Comment
Please, Sign In to add comment