openSNP/snpr

View on GitHub
app/services/data_zipper_service/zip_genotype_files.rb

Summary

Maintainability
A
1 hr
Test Coverage
# frozen_string_literal: true

class DataZipperService
  class ZipGenotypeFiles
    def initialize(zipfile)
      @zipfile = zipfile
    end

    attr_reader :zipfile

    def call
      Genotype.includes(:user).find_each do |genotype|
        next unless File.exist?(genotype.genotype.path)

        user = genotype.user
        yob = user.yearofbirth == 'rather not say' ? 'unknown' : user.yearofbirth
        sex = user.sex == 'rather not say' ? 'unknown' : user.sex

        zipfile.add(
          "user#{genotype.user_id}_file#{genotype.id}_yearofbirth_#{yob}_" \
            "sex_#{sex}.#{genotype.filetype}.txt",
          genotype.genotype.path
        )
      end
    end
  end
end