Commit ee88b0e

mo khan <mo@mokhan.ca>
2015-05-31 16:44:42
move android specific db file to android importer.
1 parent 79b3b29
app/jobs/upload_stronglifts_backup_job.rb
@@ -1,16 +1,10 @@
 class UploadStrongliftsBackupJob < ActiveJob::Base
-  WORKOUTS_SQL = "select * from workouts"
   queue_as :default
 
   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|
-          importer.import(row)
-        end
-      end
+      importer_for(dir, user, program).import_from(dir)
     end
   end
 
@@ -22,10 +16,6 @@ class UploadStrongliftsBackupJob < ActiveJob::Base
     end
   end
 
-  def database(dir)
-    yield SQLite3::Database.new("#{dir}/stronglifts.db")
-  end
-
   def importer_for(directory, user, program)
     AndroidImport.new(user, program)
   end
app/models/android_import.rb
@@ -1,4 +1,5 @@
 class AndroidImport
+  WORKOUTS_SQL = "select * from workouts"
   attr_reader :user, :program
 
   def initialize(user, program)
@@ -6,12 +7,24 @@ class AndroidImport
     @program = program
   end
 
+  def import_from(directory)
+    database(directory) do |db|
+      db.execute(WORKOUTS_SQL) do |row|
+        import(row)
+      end
+    end
+  end
+
   def import(row)
     create_workout_from(map_from(row), program)
   end
 
   private
 
+  def database(dir)
+    yield SQLite3::Database.new("#{dir}/stronglifts.db")
+  end
+
   def create_workout_from(workout_row, program)
     ActiveRecord::Base.transaction do
       workout = program.workouts.find_by(name: workout_row.workout)