sanger/sequencescape

View on GitHub
lib/tasks/report.rake

Summary

Maintainability
Test Coverage
F
18%
# frozen_string_literal: true

# Namespace for simple report taksks
namespace :report do
  desc 'Generate information about purpose classes and their usage'
  task purposes: :environment do
    Purpose.descendants.each do |klass|
      puts '=' * 80
      puts klass.name
      puts '-' * 80
      indirect = klass.where.not(type: klass.name)
      direct = Purpose.where(type: klass.name)
      puts "Used (direct): #{direct.count}"
      puts "Used (subclasses): #{indirect.count}"
      puts "Last used (direct): #{Labware.where(plate_purpose_id: direct).maximum(:created_at)}"
      puts "Last used (subclasses): #{Labware.where(plate_purpose_id: indirect).maximum(:created_at)}"
      puts '-' * 80
      puts 'Purposes using this class directly:'
      direct.pluck(:name).each(&method(:puts))
    end
  end
end