Commit 6a62895
Changed files (3)
app
models
ios
spec
models
ios
app/models/ios/import.rb
@@ -13,10 +13,47 @@ class Ios::Import
def import_from(directory)
database(directory) do |db|
db.execute("SELECT * FROM ZBASEWORKOUT") do |row|
- puts row.inspect
workout_name = row[5] == 1 ? "A" : "B"
workout = program.workouts.find_by(name: workout_name)
- user.begin_workout(workout, DateTime.parse(row[8]), row[7].to_f)
+ training_session = user.begin_workout(workout, DateTime.parse(row[8]), row[7].to_f)
+
+ workout_id = row[0]
+ Rails.logger.debug [ "workout_id", workout_id].inspect
+ db.execute("SELECT * FROM ZEXERCISESETS WHERE ZWORKOUT = '#{workout_id}';") do |exercise_set_row|
+ Rails.logger.debug ["exercise set", exercise_set_row].inspect
+
+ exercise = nil
+ target_weight = nil
+
+ exercise_id = exercise_set_row[4]
+ Rails.logger.debug ["exercise id", exercise_id].inspect
+ db.execute("SELECT * FROM ZEXERCISE WHERE ZTYPE = '#{exercise_id}';") do |exercise_row|
+ Rails.logger.debug ["exercise row", exercise_row].inspect
+ exercise = exercise_from(exercise_row)
+ end
+
+ weight_id = exercise_set_row[13]
+ Rails.logger.debug ["weight id", weight_id].inspect
+ db.execute("SELECT * FROM ZWEIGHT where Z_PK = '#{weight_id}'") do |weight_row|
+ Rails.logger.debug ["weight row", weight_row].inspect
+ target_weight = weight_row[6]
+ end
+
+ sets = [
+ row[6],
+ row[7],
+ row[8],
+ row[9] == -3 ? nil : row[9],
+ row[10] == -3 ? nil : row[10]
+ ]
+ if exercise
+ training_session.train(
+ exercise,
+ target_weight,
+ sets
+ )
+ end
+ end
end
end
end
@@ -30,4 +67,16 @@ class Ios::Import
def database(directory)
yield SQLite3::Database.new(database_file(directory))
end
+
+ def exercise_from(exercise_row)
+ mapping = {
+ 1 => "Squat",
+ 2 => "Bench Press",
+ 3 => "Barbell Row",
+ 4 => "Overhead Press",
+ 5 => "Deadlift",
+ }
+
+ program.exercises.find_by(name: mapping[exercise_row[4]])
+ end
end
spec/jobs/upload_stronglifts_backup_job_spec.rb
@@ -22,10 +22,10 @@ describe UploadStrongliftsBackupJob, type: :job do
Rails.root.join("spec", "fixtures", "backup.ios.stronglifts").to_s
end
- xit "adds each workout to the list of training sessions for the user" do
+ it "adds each workout to the list of training sessions for the user" do
subject.perform(user, backup_file, program)
- expect(user.training_sessions.count).to eql(31)
+ expect(user.training_sessions.count).to eql(9)
end
end
end
spec/models/ios/import_spec.rb
@@ -41,5 +41,10 @@ describe Ios::Import do
subject.import_from(directory)
expect(user.training_sessions.count).to eql(9)
end
+
+ it "imports each training session" do
+ subject.import_from(directory)
+ expect(user.training_sessions.first.exercise_sessions.count).to eql(3)
+ end
end
end