# frozen_string_literal: true

class InstallAudited < ActiveRecord::Migration[6.1]
  # rubocop:disable Metrics/MethodLength
  def self.up
    create_table :audits, :force => true do |t|
      t.bigint :auditable_id
      t.string :auditable_type
      t.bigint :associated_id
      t.string :associated_type
      t.bigint :user_id
      t.string :user_type
      t.string :username
      t.string :action
      t.jsonb :audited_changes
      t.integer :version, :default => 0
      t.string :comment
      t.string :remote_address
      t.string :request_uuid
      t.datetime :created_at
    end
    # rubocop:enable Metrics/MethodLength

    add_index :audits, [:auditable_type, :auditable_id, :version], :name => 'auditable_index'
    add_index :audits, [:associated_type, :associated_id], :name => 'associated_index'
    add_index :audits, [:user_id, :user_type], :name => 'user_index'
    add_index :audits, :request_uuid
    add_index :audits, :created_at
  end

  def self.down
    drop_table :audits
  end
end
