module Export

  class UnsupportedExportSource   < RuntimeError; end
  class FormatInvalidError        < RuntimeError; end
  class FilenameMissingError      < RuntimeError; end
  class ExportInProgressError     < RuntimeError; end

  def self.current_schema_version
    ActiveRecord::Migrator.current_version.to_s
  end

  def self.models_included_in_export
    @models_included_in_export ||= begin
      Rails.application.eager_load! # So that all models get loaded now
      ActiveRecord::Base.descendants
    end
  end

  def self.export_running_key
    'exporter_is_running'
  end

  def self.is_export_running?
    $redis.get(export_running_key) == '1'
  end

  def self.set_export_started
    $redis.set export_running_key, '1'
  end

  def self.set_export_is_not_running
    $redis.del export_running_key
  end

end