Method: Apidae::Selection#cleanup

Defined in:
app/models/apidae/selection.rb

#cleanupObject



45
46
47
48
49
50
51
52
53
54
55
56
57
# File 'app/models/apidae/selection.rb', line 45

def cleanup
  obsolete_count = apidae_selection_objects
    .joins("LEFT JOIN apidae_objs ON apidae_objs.id = apidae_selection_objects.apidae_object_id")
    .where("apidae_objs.id IS NULL")
    .delete_all
  logger.info "Cleaned up #{obsolete_count} obsolete selection-objects associations for selection #{apidae_id}"

  dups = apidae_selection_objects.reload.group(:apidae_object_id)
                                 .select("COUNT(id), apidae_object_id, ARRAY_AGG(id) AS so_ids")
                                 .having("COUNT(id) > ?", 1).map {|so| so.so_ids}
  dups_count = apidae_selection_objects.where(id: dups.map {|d| d.sort[1..-1]}.flatten).delete_all
  logger.debug "Cleaned up #{dups_count} duplicate selection-objects associations for selection #{apidae_id}"
end