# frozen_string_literal: true

class BackfillOutboundMessageId < ActiveRecord::Migration[7.0]
  def up
    # best effort backfill, we don't care about years worth of message_id
    # preservation
    #
    # we also don't need to backfill outbound_message_id for posts that
    # do _not_ have an incoming email linked, since that will be backfilled
    # at runtime if it is missing
    sql_query = <<~SQL
      UPDATE posts
      SET outbound_message_id = ie.message_id
      FROM incoming_emails AS ie
      WHERE ie.post_id = posts.id
        AND posts.created_at >= :one_year_ago
        AND posts.outbound_message_id IS NULL
    SQL
    DB.exec(sql_query, one_year_ago: 1.year.ago)
  end

  def down
    raise ActiveRecord::IrreversibleMigration
  end
end