From 75140b1a942019a7dc479032cb37cf242eb7087e Mon Sep 17 00:00:00 2001 From: Tony Miller Date: Sat, 30 Dec 2023 10:24:46 -0800 Subject: [PATCH 1/2] clean up dup labels add labels spec --- script/labels_cleanup.rb | 10 ++++++++++ spec/models/label_spec.rb | 9 +++++++++ 2 files changed, 19 insertions(+) create mode 100644 script/labels_cleanup.rb create mode 100644 spec/models/label_spec.rb diff --git a/script/labels_cleanup.rb b/script/labels_cleanup.rb new file mode 100644 index 00000000..fdd678a1 --- /dev/null +++ b/script/labels_cleanup.rb @@ -0,0 +1,10 @@ +Label.find_each do |label| + downcase_name = label.name.downcase + dups = Label.where("name ilike ?", "%#{downcase_name}") + if dups.count > 1 + # delete all except 1 + dups.pop + dups.map(&:destroy) + end + dups.first.update(name: name.downcase) +end diff --git a/spec/models/label_spec.rb b/spec/models/label_spec.rb new file mode 100644 index 00000000..9e4cfcc0 --- /dev/null +++ b/spec/models/label_spec.rb @@ -0,0 +1,9 @@ +require 'rails_helper' + +RSpec.describe Label, type: :model do + it 'always save the name as downcase' do + radio = FactoryBot.create :radio + label = Label.create name: 'FooOO', radio: radio + expect(label.name).to eq 'foooo' + end +end From 13394d66b8dd549f737a432bf5801c419389f8df Mon Sep 17 00:00:00 2001 From: Tony Miller Date: Thu, 25 Jan 2024 16:28:40 -0800 Subject: [PATCH 2/2] consolidate associated dup data --- script/labels_cleanup.rb | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/script/labels_cleanup.rb b/script/labels_cleanup.rb index fdd678a1..b08f7643 100644 --- a/script/labels_cleanup.rb +++ b/script/labels_cleanup.rb @@ -3,8 +3,15 @@ dups = Label.where("name ilike ?", "%#{downcase_name}") if dups.count > 1 # delete all except 1 + the_one_true_label = dups.first + the_one_true_label.update(name: name.downcase) dups.pop + dups.find_each do |dup| + shows = ScheduledShowLabel.where(label: dup) + shows.update_all label_id: the_one_true_label.id + tracks = TrackLabel.where(label: dup) + tracks.update_all label_id: the_one_true_label.id + end dups.map(&:destroy) end - dups.first.update(name: name.downcase) end