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
