Project

General

Profile

« Previous | Next » 

Revision cbe8aa6e

Added by Tomer Brisker about 9 years ago

Fixes #9969 - remove N+1 queries on host edit page

View differences:

app/helpers/hosts_and_hostgroups_helper.rb
def interesting_klasses(obj)
classes = obj.all_puppetclasses
smart_vars = LookupKey.reorder('').where(:puppetclass_id => classes.map(&:id)).group(:puppetclass_id).count
class_vars = LookupKey.reorder('').joins(:environment_classes).where(:environment_classes => { :puppetclass_id => classes.map(&:id) }).group('environment_classes.puppetclass_id').count
klasses = smart_vars.keys + class_vars.keys
classes_ids = classes.reorder('').pluck(:id)
smart_vars = LookupKey.reorder('').where(:puppetclass_id => classes_ids).uniq.pluck(:puppetclass_id)
class_vars = LookupKey.reorder('').joins(:environment_classes).where(:environment_classes => { :puppetclass_id => classes_ids }).uniq.pluck('environment_classes.puppetclass_id')
klasses = (smart_vars + class_vars).uniq
classes.select { |pc| klasses.include?(pc.id) }
classes.where(:id => klasses)
end
end
app/views/config_groups/_config_groups_selection.html.erb
<div class="row">
<div class="col-md-6 classes">
<ul class="config_group_group">
<% (ConfigGroup.scoped - obj.parent_config_groups).each do |config_group| %>
<% (ConfigGroup.scoped.includes(:puppetclasses) - obj.parent_config_groups).each do |config_group| %>
<% css_class = obj.config_groups.include?(config_group) ? "hide" : "" %>
<%= render 'config_groups/config_group', :obj => obj, :config_group => config_group, :added => false, :css_class => css_class %>
<% end %>

Also available in: Unified diff