Skip to content

Commit c5ba34e

Browse files
committed
Add comments, improve performace etc.
1 parent 8829687 commit c5ba34e

1 file changed

Lines changed: 11 additions & 9 deletions

File tree

db/migrate/20250930220504_update_term_item_relation.rb

Lines changed: 11 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
# Migration to reassign items with the term "After 1999" to a newly categorized term.
12
class UpdateTermItemRelation < ActiveRecord::Migration[7.0]
23
def up
34
facet = Facet.find_by!(name: 'Decade')
@@ -25,16 +26,16 @@ def up
2526
end
2627

2728
if invalid_items.any?
28-
Rails.logger.warn("Skipped #{invalid_items.size} items due to invalid or missing dates. Example: #{invalid_items.first(10).map { |i| "ID #{i[:id]}: '#{i[:date]}'" }.join(', ')}")
29+
Rails.logger.warn("Skipped #{invalid_items.size} items due to invalid or missing dates. Example: #{invalid_items.first(5).map { |i| "ID #{i[:id]}: '#{i[:date]}'" }.join(', ')}")
2930
end
3031
end
3132

3233
def down
3334
facet = Facet.find_by!(name: 'Decade')
3435
target_term = Term.find_by!(facet: facet, value: 'After 1999')
35-
move_term_back_to_item(facet, '2000-2009', target_term)
36-
move_term_back_to_item(facet, '2010-2019', target_term)
37-
move_term_back_to_item(facet, 'After 2020', target_term)
36+
revert_term_assignment(facet, '2000-2009', target_term)
37+
revert_term_assignment(facet, '2010-2019', target_term)
38+
revert_term_assignment(facet, 'After 2020', target_term)
3839
end
3940

4041
private
@@ -43,27 +44,28 @@ def integer_year(val)
4344
return nil if val.nil?
4445

4546
# Try direct integer conversion
47+
year = nil
4648
begin
47-
return Integer(val)
49+
year = Integer(val)
4850
rescue ArgumentError, TypeError
4951
# Try to extract year from common date formats (e.g., "YYYY-MM-DD", "YYYY/MM/DD")
5052
if val.is_a?(String)
5153
if val =~ /\A(\d{4})[-\/]/
52-
return $1.to_i
54+
year = $1.to_i
5355
end
5456
end
55-
return nil
5657
end
58+
return year
5759
end
5860

5961
# Reassigns an item from the origin term to the target term, and removes the origin term from the item.
6062
def re_assign_term_to_item(item, origin_term, target_term)
61-
item.terms << target_term unless item.terms.include?(target_term)
63+
item.terms << target_term
6264
item.terms.delete(origin_term)
6365
end
6466

6567
# Rolls back term assignment from origin_term_value to target_term for all items.
66-
def move_term_back_to_item(facet, origin_term_value, target_term)
68+
def revert_term_assignment(facet, origin_term_value, target_term)
6769
origin_term = Term.find_by!(facet: facet, value: origin_term_value)
6870
origin_term.items.find_each do |item|
6971
re_assign_term_to_item(item, origin_term, target_term)

0 commit comments

Comments
 (0)