# frozen_string_literal: true

class AddSecureToUploads < ActiveRecord::Migration[5.2]
  def up
    add_column :uploads, :secure, :boolean, default: false, null: false

    prevent_anons_from_downloading_files =
      DB.query_single(
        "SELECT value FROM site_settings WHERE name = 'prevent_anons_from_downloading_files'",
      ).first == "t"

    execute(<<-SQL) if prevent_anons_from_downloading_files
        UPDATE uploads SET secure = 't' WHERE id IN (
          SELECT DISTINCT(uploads.id) FROM uploads
          INNER JOIN post_uploads ON post_uploads.upload_id = uploads.id
          WHERE LOWER(original_filename) NOT SIMILAR TO '%\.(jpg|jpeg|png|gif|svg|ico)'
        )
        SQL
  end

  def down
    remove_column :uploads, :secure
  end
end