# frozen_string_literal: true

require 'fileutils'

namespace :railway_ipc do
  namespace :generate do
    desc 'Generates migrations to store Railway messages'
    task :migrations do
      raise 'Migration generation requires active record' unless defined?(ActiveRecord::Base)

      puts 'generating Railway IPC table migrations'
      seconds = 0
      gem_path = Gem.loaded_specs['railway-ipc'].full_gem_path
      folder_dest = "#{Rails.root}/db/migrate"
      FileUtils.mkdir_p(folder_dest)

      Dir.glob("#{gem_path}/priv/migrations/*.rb").each do |file_path|
        file_name = File.basename(file_path)
        migration_timestamp = (Time.now + seconds).utc.strftime('%Y%m%d%H%M%S') % '%.14d'
        new_file_name = "#{migration_timestamp}_#{file_name}"
        FileUtils.copy_file(file_path, "#{folder_dest}/#{new_file_name}")
        seconds += 1
      end
    end
  end
end