Sha256: d117d8223744817cb6d39649552429cbb2c491cb71e3e3771704d214724b9e2e

Contents?: true

Size: 1.77 KB

Versions: 33

Compression:

Stored size: 1.77 KB

Contents

# :nocov:
module PgEngine
  module Utils
    class ResourceReports
      def check_invalid_records
        invalids = []
        classes.each do |klass|
          klass.find_each do |record|
            invalids << record unless record.valid?
          end
        end
        invalids.map do |r|
          [
            (r.account.to_s if r.respond_to?(:account)),
            r.class.to_s,
            r.id,
            r.errors.full_messages
          ]
        end
      end

      def report(klass)
        if klass.respond_to?(:discarded)
          <<~STRING
            #{klass}.unscoped.count: #{klass.unscoped.count}
            #{klass}.unscoped.kept.count: #{klass.unscoped.kept.count}
            #{klass}.unscoped.unkept.count: #{klass.unscoped.unkept.count}
            #{klass}.unscoped.discarded.count: #{klass.unscoped.discarded.count}
            #{klass}.unscoped.undiscarded.count: #{klass.unscoped.undiscarded.count}
          STRING
        else
          <<~STRING
            #{klass}.unscoped.count: #{klass.unscoped.count}
          STRING
        end
      end

      def report_all
        classes.map { |klass| report(klass).to_s }.join("\n")
      end

      def classes
        all = ActiveRecord::Base.descendants.select { |m| m.table_name.present? }
        all - ignored_classes
      end

      def ignored_classes
        [
          ActionText::Record,
          ActionMailbox::Record,
          ActiveStorage::Record,
          PgEngine::BaseRecord,
          Audited::Audit,
          ActionText::RichText,
          ActionText::EncryptedRichText,
          ActionMailbox::InboundEmail,
          ActiveStorage::VariantRecord,
          ActiveStorage::Attachment,
          ActiveStorage::Blob,
          ApplicationRecord
        ]
      end
    end
  end
end
# :nocov:

Version data entries

33 entries across 33 versions & 1 rubygems

Version Path
pg_rails-7.6.35 pg_engine/lib/pg_engine/utils/resource_reports.rb
pg_rails-7.6.34 pg_engine/lib/pg_engine/utils/resource_reports.rb
pg_rails-7.6.33 pg_engine/lib/pg_engine/utils/resource_reports.rb
pg_rails-7.6.32 pg_engine/lib/pg_engine/utils/resource_reports.rb
pg_rails-7.6.31 pg_engine/lib/pg_engine/utils/resource_reports.rb
pg_rails-7.6.30 pg_engine/lib/pg_engine/utils/resource_reports.rb
pg_rails-7.6.29 pg_engine/lib/pg_engine/utils/resource_reports.rb
pg_rails-7.6.28 pg_engine/lib/pg_engine/utils/resource_reports.rb
pg_rails-7.6.27 pg_engine/lib/pg_engine/utils/resource_reports.rb
pg_rails-7.6.26 pg_engine/lib/pg_engine/utils/resource_reports.rb
pg_rails-7.6.25 pg_engine/lib/pg_engine/utils/resource_reports.rb
pg_rails-7.6.24 pg_engine/lib/pg_engine/utils/resource_reports.rb
pg_rails-7.6.24.pre.5 pg_engine/lib/pg_engine/utils/resource_reports.rb
pg_rails-7.6.24.pre.4 pg_engine/lib/pg_engine/utils/resource_reports.rb
pg_rails-7.6.24.pre.3 pg_engine/lib/pg_engine/utils/resource_reports.rb
pg_rails-7.6.23 pg_engine/lib/pg_engine/utils/resource_reports.rb
pg_rails-7.6.22 pg_engine/lib/pg_engine/utils/resource_reports.rb
pg_rails-7.6.22.pre.3 pg_engine/lib/pg_engine/utils/resource_reports.rb
pg_rails-7.6.22.pre.2 pg_engine/lib/pg_engine/utils/resource_reports.rb
pg_rails-7.6.22.pre.1 pg_engine/lib/pg_engine/utils/resource_reports.rb