Commit bf19f08
Changed files (3)
app
models
app/jobs/upload_stronglifts_backup_job.rb
@@ -5,9 +5,10 @@ class UploadStrongliftsBackupJob < ActiveJob::Base
def perform(user, backup_file, program)
tmp_dir do |dir|
`unzip #{backup_file} -d #{dir}`
+ importer = importer_for(dir, user, program)
database(dir) do |db|
db.execute(WORKOUTS_SQL) do |row|
- user.training_sessions.create_workout_from(map_from(row), program)
+ importer.import(row)
end
end
end
@@ -25,18 +26,7 @@ class UploadStrongliftsBackupJob < ActiveJob::Base
yield SQLite3::Database.new("#{dir}/stronglifts.db")
end
- def map_from(row)
- WorkoutRow.new(
- id: row[0],
- date: DateTime.parse(row[1]),
- workout: row[2],
- exercise_1: JSON.parse(row[3]),
- exercise_2: JSON.parse(row[4]),
- exercise_3: JSON.parse(row[5]),
- note: row[6],
- body_weight: row[7],
- arm_work: row[8].present? ? JSON.parse(row[8]) : nil,
- temp: row[9]
- )
+ def importer_for(directory, user, program)
+ AndroidImport.new(user, program)
end
end
app/models/android_import.rb
@@ -0,0 +1,29 @@
+class AndroidImport
+ attr_reader :user, :program
+
+ def initialize(user, program)
+ @user = user
+ @program = program
+ end
+
+ def import(row)
+ user.training_sessions.create_workout_from(map_from(row), program)
+ end
+
+ private
+
+ def map_from(row)
+ WorkoutRow.new(
+ id: row[0],
+ date: DateTime.parse(row[1]),
+ workout: row[2],
+ exercise_1: JSON.parse(row[3]),
+ exercise_2: JSON.parse(row[4]),
+ exercise_3: JSON.parse(row[5]),
+ note: row[6],
+ body_weight: row[7],
+ arm_work: row[8].present? ? JSON.parse(row[8]) : nil,
+ temp: row[9]
+ )
+ end
+end
app/models/user.rb
@@ -16,7 +16,6 @@ class User < ActiveRecord::Base
username
end
- # extract a personal record object
def personal_record(exercise)
exercise_sessions.
joins(:exercise).