# frozen_string_literal: true

module Jobs
  module DiscourseNarrativeBot
    class RemapOldBotImages < ::Jobs::Onceoff
      def execute_onceoff(args)
        paths = [
          "/images/font-awesome-link.png",
          "/images/unicorn.png",
          "/images/font-awesome-ellipsis.png",
          "/images/font-awesome-bookmark.png",
          "/images/font-awesome-smile.png",
          "/images/font-awesome-flag.png",
          "/images/font-awesome-search.png",
          "/images/capybara-eating.gif",
          "/images/font-awesome-pencil.png",
          "/images/font-awesome-trash.png",
          "/images/font-awesome-rotate-left.png",
          "/images/font-awesome-gear.png",
        ]

        Post.raw_match("/images/").where(user_id: -2).find_each do |post|
          if (matches = post.raw.scan(/(?<!\/plugins\/discourse-narrative-bot)(#{paths.join("|")})/)).present?
            new_raw = post.raw

            matches.each do |match|
              path = match.first
              new_raw = new_raw.gsub(path, "/plugins/discourse-narrative-bot#{path}")
            end

            post.update_columns(raw: new_raw)
            post.rebake!
          end
        end
      end
    end
  end
end