Commit bf19f08

mo khan <mo@mokhan.ca>
2015-05-31 16:29:03
extract android importer.
1 parent 2e0fad5
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).