Commit e6e9bc5
db/seeds.rb
@@ -11,25 +11,9 @@ class Seeds
end
def run
- 10.times do
- background_thread do
- rand(100).times do
- rand(50).times do
- puts "creating"
- database[:events].insert(
- computer_id: create_computer(business_id: create_business(name: FFaker::Company.name)),
- occurred_at: DateTime.parse(FFaker::Time.datetime),
- type: event_types.sample,
- data: JSON.generate({
- ip_address: FFaker::Internet.ip_v4_address,
- mac: FFaker::Internet.mac,
- url: FFaker::Internet.http_url,
- })
- )
- end
- end
- end
- end
+ 100.times { create_business }
+ 10_000.times { create_computer }
+ 25_000.times { create_event }
ensure
@threads.map(&:join)
end
@@ -40,11 +24,32 @@ class Seeds
@threads << Thread.new(&block)
end
- def create_computer(active: rand(100).even?, business_id:)
- database[:computers].insert(active: active, business_id: business_id)
+ def create_computer(active: rand(100).even?, business: random_business)
+ database[:computers].insert(active: active, business_id: business[:id])
end
- def create_business(name:)
+ def create_business(name: FFaker::Company.name)
database[:businesses].insert(name: name, business_relationship_id: rand(3))
end
+
+ def create_event(computer: random_computer)
+ database[:events].insert(
+ computer_id: computer[:id],
+ occurred_at: DateTime.parse(FFaker::Time.datetime),
+ type: event_types.sample,
+ data: JSON.generate({
+ ip_address: FFaker::Internet.ip_v4_address,
+ mac: FFaker::Internet.mac,
+ url: FFaker::Internet.http_url,
+ })
+ )
+ end
+
+ def random_business
+ database[:businesses].limit(1).offset(rand(database[:businesses].count)).first
+ end
+
+ def random_computer
+ database[:computers].limit(1).offset(rand(database[:computers].count)).first
+ end
end
Rakefile
@@ -1,9 +1,11 @@
require 'rubygems'
require 'bundler'
+require 'logger'
Bundler.require(:default)
DATABASE_NAME = 'sql_bootcamp'
DATABASE = Sequel.connect("mysql2://root@localhost/#{DATABASE_NAME}")
+DATABASE.loggers << Logger.new($stdout)
namespace :db do
def pipe_to_mysql(command)