Added doc, improved performance through ActiveRecord::Base.transaction.
This commit is contained in:
parent
506e2f1e04
commit
e1dc0b1707
1 changed files with 112 additions and 73 deletions
|
@ -1,5 +1,18 @@
|
||||||
# rubocop:disable Rails/Output
|
# rubocop:disable Rails/Output
|
||||||
module FillDB
|
module FillDB
|
||||||
|
|
||||||
|
=begin
|
||||||
|
|
||||||
|
fill your database with demo records
|
||||||
|
|
||||||
|
FillDB.load(agents, customers, groups, organizations, tickets)
|
||||||
|
|
||||||
|
e. g.
|
||||||
|
|
||||||
|
FillDB.load(10, 100, 5, 40, 1000)
|
||||||
|
|
||||||
|
=end
|
||||||
|
|
||||||
def self.load( agents, customers, groups, organizations, tickets )
|
def self.load( agents, customers, groups, organizations, tickets )
|
||||||
puts 'load db with:'
|
puts 'load db with:'
|
||||||
puts " agents:#{agents}"
|
puts " agents:#{agents}"
|
||||||
|
@ -14,10 +27,15 @@ module FillDB
|
||||||
# organizations
|
# organizations
|
||||||
organization_pool = []
|
organization_pool = []
|
||||||
if organizations && !organizations.zero?
|
if organizations && !organizations.zero?
|
||||||
|
|
||||||
|
ActiveRecord::Base.transaction do
|
||||||
|
|
||||||
(1..organizations).each {
|
(1..organizations).each {
|
||||||
organization = Organization.create( name: 'FillOrganization::' + rand(999_999).to_s, active: true )
|
organization = Organization.create( name: 'FillOrganization::' + rand(999_999).to_s, active: true )
|
||||||
organization_pool.push organization
|
organization_pool.push organization
|
||||||
}
|
}
|
||||||
|
|
||||||
|
end
|
||||||
else
|
else
|
||||||
organization_pool = Organization.where(active: true)
|
organization_pool = Organization.where(active: true)
|
||||||
end
|
end
|
||||||
|
@ -27,6 +45,9 @@ module FillDB
|
||||||
if agents && !agents.zero?
|
if agents && !agents.zero?
|
||||||
roles = Role.where( name: [ 'Agent'] )
|
roles = Role.where( name: [ 'Agent'] )
|
||||||
groups_all = Group.all
|
groups_all = Group.all
|
||||||
|
|
||||||
|
ActiveRecord::Base.transaction do
|
||||||
|
|
||||||
(1..agents).each {
|
(1..agents).each {
|
||||||
suffix = rand(99_999).to_s
|
suffix = rand(99_999).to_s
|
||||||
user = User.create_or_update(
|
user = User.create_or_update(
|
||||||
|
@ -41,6 +62,8 @@ module FillDB
|
||||||
)
|
)
|
||||||
agent_pool.push user
|
agent_pool.push user
|
||||||
}
|
}
|
||||||
|
|
||||||
|
end
|
||||||
else
|
else
|
||||||
agent_pool = Role.where(name: 'Agent').first.users.where(active: true)
|
agent_pool = Role.where(name: 'Agent').first.users.where(active: true)
|
||||||
puts " take #{agent_pool.length} agents"
|
puts " take #{agent_pool.length} agents"
|
||||||
|
@ -51,6 +74,9 @@ module FillDB
|
||||||
if customers && !customers.zero?
|
if customers && !customers.zero?
|
||||||
roles = Role.where( name: [ 'Customer'] )
|
roles = Role.where( name: [ 'Customer'] )
|
||||||
groups_all = Group.all
|
groups_all = Group.all
|
||||||
|
|
||||||
|
ActiveRecord::Base.transaction do
|
||||||
|
|
||||||
(1..customers).each {
|
(1..customers).each {
|
||||||
suffix = rand(99_999).to_s
|
suffix = rand(99_999).to_s
|
||||||
organization = nil
|
organization = nil
|
||||||
|
@ -69,6 +95,8 @@ module FillDB
|
||||||
)
|
)
|
||||||
customer_pool.push user
|
customer_pool.push user
|
||||||
}
|
}
|
||||||
|
|
||||||
|
end
|
||||||
else
|
else
|
||||||
customer_pool = Role.where(name: 'Customer').first.users.where(active: true)
|
customer_pool = Role.where(name: 'Customer').first.users.where(active: true)
|
||||||
end
|
end
|
||||||
|
@ -77,6 +105,9 @@ module FillDB
|
||||||
group_pool = []
|
group_pool = []
|
||||||
if groups && !groups.zero?
|
if groups && !groups.zero?
|
||||||
puts "1..#{groups}"
|
puts "1..#{groups}"
|
||||||
|
|
||||||
|
ActiveRecord::Base.transaction do
|
||||||
|
|
||||||
(1..groups).each {
|
(1..groups).each {
|
||||||
group = Group.create( name: 'FillGroup::' + rand(999_999).to_s, active: true )
|
group = Group.create( name: 'FillGroup::' + rand(999_999).to_s, active: true )
|
||||||
group_pool.push group
|
group_pool.push group
|
||||||
|
@ -87,6 +118,8 @@ module FillDB
|
||||||
user.save
|
user.save
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
end
|
||||||
else
|
else
|
||||||
group_pool = Group.where(active: true)
|
group_pool = Group.where(active: true)
|
||||||
end
|
end
|
||||||
|
@ -94,7 +127,11 @@ module FillDB
|
||||||
# create tickets
|
# create tickets
|
||||||
priority_pool = Ticket::Priority.all
|
priority_pool = Ticket::Priority.all
|
||||||
state_pool = Ticket::State.all
|
state_pool = Ticket::State.all
|
||||||
|
|
||||||
if tickets && !tickets.zero?
|
if tickets && !tickets.zero?
|
||||||
|
|
||||||
|
ActiveRecord::Base.transaction do
|
||||||
|
|
||||||
(1..tickets).each {
|
(1..tickets).each {
|
||||||
customer = customer_pool[ rand(customer_pool.length - 1) ]
|
customer = customer_pool[ rand(customer_pool.length - 1) ]
|
||||||
agent = agent_pool[ rand(agent_pool.length - 1) ]
|
agent = agent_pool[ rand(agent_pool.length - 1) ]
|
||||||
|
@ -124,5 +161,7 @@ module FillDB
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
end
|
end
|
||||||
|
|
||||||
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
Loading…
Reference in a new issue