# frozen_string_literal: true

module FreedomPatches
  module SchemaMigrationDetails
    def exec_migration(conn, direction)
      rval = nil

      time = Benchmark.measure { rval = super }

      sql = <<SQL
      INSERT INTO schema_migration_details(
        version,
        hostname,
        name,
        git_version,
        duration,
        direction,
        rails_version,
        created_at
      ) values (
        :version,
        :hostname,
        :name,
        :git_version,
        :duration,
        :direction,
        :rails_version,
        :created_at
      )
SQL

      hostname = Discourse.os_hostname
      sql =
        ActiveRecord::Base.public_send(
          :sanitize_sql_array,
          [
            sql,
            {
              version: version || "",
              duration: (time.real * 1000).to_i,
              hostname: hostname,
              name: name,
              git_version: Discourse.git_version,
              created_at: Time.zone.now,
              direction: direction.to_s,
              rails_version: Rails.version,
            },
          ],
        )

      conn.execute(sql)

      rval
    end

    ActiveRecord::Migration.prepend(self)
  end
end