Dashboard/app/services/dashboard/sftp/race_loader.rb

35 lines
924 B
Ruby

require "net/sftp"
require "uri"
require "csv"
module Dashboard
module Sftp
class RaceLoader
def self.load_data(path: "/data/survey_responses/")
SurveyItemResponse.update_all(student_id: nil)
StudentRace.delete_all
Student.delete_all
sftptogo_url = ENV["SFTPTOGO_URL"]
uri = URI.parse(sftptogo_url)
Net::SFTP.start(uri.host, uri.user, password: uri.password) do |sftp|
sftp.dir.foreach(path) do |entry|
filename = entry.name
puts filename
sftp.file.open(filepath(path:, filename:), "r") do |f|
StudentLoader.from_file(file: f, rules: [Rule::SkipNonLowellSchools])
end
end
end
end
def self.filepath(path:, filename:)
path += "/" unless path.end_with?("/")
"#{path}#{filename}"
end
private_class_method :filepath
end
end
end