Commit ee88b0e
Changed files (2)
app
models
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)