Sha256: 58549cacfacc857e1873f50f3170ca90cc2b9aca212862f8a4c7c4124c8deaf2

Contents?: true

Size: 1.98 KB

Versions: 20

Compression:

Stored size: 1.98 KB

Contents

# frozen_string_literal: true

require "rails/generators"
require "rails/generators/migration"
require "active_record"
require "rails/generators/active_record"
require "generators/audited/migration"
require "generators/audited/migration_helper"

module Audited
  module Generators
    class UpgradeGenerator < Rails::Generators::Base
      include Rails::Generators::Migration
      include Audited::Generators::MigrationHelper
      extend Audited::Generators::Migration

      source_root File.expand_path("../templates", __FILE__)

      def copy_templates
        migrations_to_be_applied do |m|
          migration_template "#{m}.rb", "db/migrate/#{m}.rb"
        end
      end

      private

      def migrations_to_be_applied
        Audited::Audit.reset_column_information
        columns = Audited::Audit.columns.map(&:name)
        indexes = Audited::Audit.connection.indexes(Audited::Audit.table_name)

        yield :add_comment_to_audits unless columns.include?("comment")

        if columns.include?("changes")
          yield :rename_changes_to_audited_changes
        end

        unless columns.include?("remote_address")
          yield :add_remote_address_to_audits
        end

        unless columns.include?("request_uuid")
          yield :add_request_uuid_to_audits
        end

        unless columns.include?("association_id")
          if columns.include?("auditable_parent_id")
            yield :rename_parent_to_association
          else
            unless columns.include?("associated_id")
              yield :add_association_to_audits
            end
          end
        end

        if columns.include?("association_id")
          yield :rename_association_to_associated
        end

        if indexes.any? { |i| i.columns == %w[associated_id associated_type] }
          yield :revert_polymorphic_indexes_order
        end

        if indexes.any? { |i| i.columns == %w[auditable_type auditable_id] }
          yield :add_version_to_auditable_index
        end
      end
    end
  end
end

Version data entries

20 entries across 20 versions & 2 rubygems

Version Path
audited-5.8.0 lib/generators/audited/upgrade_generator.rb
audited-5.7.0 lib/generators/audited/upgrade_generator.rb
audited-5.6.0 lib/generators/audited/upgrade_generator.rb
audited-5.5.1.pre lib/generators/audited/upgrade_generator.rb
audited-5.5.0 lib/generators/audited/upgrade_generator.rb
audited-5.4.3 lib/generators/audited/upgrade_generator.rb
audited-5.4.2 lib/generators/audited/upgrade_generator.rb
audited-5.4.1 lib/generators/audited/upgrade_generator.rb
audited-5.4.0 lib/generators/audited/upgrade_generator.rb
audited-5.3.3 lib/generators/audited/upgrade_generator.rb
audited-5.3.2 lib/generators/audited/upgrade_generator.rb
audited-5.3.1 lib/generators/audited/upgrade_generator.rb
audited-5.3.0 lib/generators/audited/upgrade_generator.rb
audited-5.2.0 lib/generators/audited/upgrade_generator.rb
audited-5.1.0 lib/generators/audited/upgrade_generator.rb
velocity_audited-5.1.4 lib/generators/audited/upgrade_generator.rb
velocity_audited-5.1.3 lib/generators/audited/upgrade_generator.rb
audited-5.0.2 lib/generators/audited/upgrade_generator.rb
audited-5.0.1 lib/generators/audited/upgrade_generator.rb
audited-5.0.0 lib/generators/audited/upgrade_generator.rb