added 260907 version of worker toolkit
This commit is contained in:
@@ -0,0 +1,101 @@
|
||||
DAYS = 60
|
||||
email = ENV["CHECKINS_FOR"]
|
||||
if email.present?
|
||||
puts "email=#{email}"
|
||||
|
||||
user = User.find_or_create_by(email: email)
|
||||
|
||||
# Delete all Tracking, Checkin and Tag
|
||||
Tracking.destroy_all
|
||||
Checkin.destroy_all
|
||||
Checkin::Tag.destroy_all
|
||||
|
||||
# Set locale to default
|
||||
I18n.locale = I18n.default_locale
|
||||
|
||||
# Create some trackables (both global and personal)
|
||||
conditions = FactoryBot.create_list(:user_condition, 2, user: user).map(&:condition)
|
||||
conditions += FactoryBot.create_list(:condition, 3)
|
||||
symptoms = FactoryBot.create_list(:user_symptom, 2, user: user).map(&:symptom)
|
||||
symptoms += FactoryBot.create_list(:symptom, 5)
|
||||
treatments = FactoryBot.create_list(:user_treatment, 3, user: user).map(&:treatment)
|
||||
treatments += FactoryBot.create_list(:treatment, 6)
|
||||
|
||||
# Create some tags
|
||||
tags = FactoryBot.create_list(:tag, 10)
|
||||
|
||||
# Setup time frame
|
||||
end_at = Date.today
|
||||
day = end_at - (DAYS - 1).days
|
||||
|
||||
# Start tracking some trackable
|
||||
2.times do
|
||||
condition = conditions.pop
|
||||
Tracking.create!(user: user, trackable: condition, start_at: day)
|
||||
puts "Start tracking #{condition.name}"
|
||||
end
|
||||
3.times do
|
||||
symptom = symptoms.pop
|
||||
Tracking.create!(user: user, trackable: symptom, start_at: day)
|
||||
puts "Start tracking #{symptom.name}"
|
||||
end
|
||||
4.times do
|
||||
treatment = treatments.pop
|
||||
Tracking.create!(user: user, trackable: treatment, start_at: day)
|
||||
puts "Start tracking #{treatment.name}"
|
||||
end
|
||||
|
||||
# Iterate on days
|
||||
i = 1
|
||||
divisors_range_start = DAYS / 4 + 2
|
||||
divisors_range = (divisors_range_start..divisors_range_start + 2)
|
||||
while day <= end_at
|
||||
puts "\n\n=== Day: #{day} ==="
|
||||
|
||||
active_trackings = user.trackings.active_at(day).to_a
|
||||
# Stop tracking something at some random iteration
|
||||
if i % divisors_range.to_a.sample == 0
|
||||
tracking = active_trackings.sample
|
||||
tracking.update!(end_at: day)
|
||||
puts "Stop tracking #{tracking.trackable.name}"
|
||||
end
|
||||
|
||||
# Start tracking something at some random iteration
|
||||
# (either something new, or something tracked earlier)
|
||||
if i % divisors_range.to_a.sample == 0
|
||||
tracked_earlier = (user.trackings.to_a - active_trackings.to_a).map(&:trackable)
|
||||
trackables_matrix = [conditions, treatments, tracked_earlier, symptoms]
|
||||
trackables = []
|
||||
trackables = trackables_matrix.pop while trackables.empty?
|
||||
trackable = trackables.pop
|
||||
Tracking.create!(user: user, trackable: trackable, start_at: day)
|
||||
puts "Start tracking #{trackable.name}"
|
||||
end
|
||||
|
||||
# Checkin
|
||||
checkin = FactoryBot.create(:checkin,
|
||||
user_id: user.id, date: day, tag_ids: tags.sample(3).map(&:id))
|
||||
active_trackings = user.trackings.reload.active_at(day)
|
||||
active_trackings.map(&:trackable).each do |trackable|
|
||||
if trackable.is_a? Condition
|
||||
condition_checkin = FactoryBot.create(
|
||||
:checkin_condition, checkin: checkin, condition_id: trackable.id
|
||||
)
|
||||
puts "Checked-in #{trackable.name}, value: #{condition_checkin.value}"
|
||||
elsif trackable.is_a? Symptom
|
||||
symptom_checkin = FactoryBot.create(
|
||||
:checkin_symptom, checkin: checkin, symptom_id: trackable.id
|
||||
)
|
||||
puts "Checked-in #{trackable.name}, value: #{symptom_checkin.value}"
|
||||
elsif trackable.is_a? Treatment
|
||||
treatment_checkin = FactoryBot.create(
|
||||
:checkin_treatment, checkin: checkin, treatment_id: trackable.id
|
||||
)
|
||||
puts "Checked-in #{trackable.name}, value: #{treatment_checkin.value}"
|
||||
end
|
||||
end
|
||||
|
||||
day += 1.day
|
||||
i += 1
|
||||
end
|
||||
end
|
||||
Reference in New Issue
Block a user