Class: OnlineMigrations::BackgroundMigrations::BackfillItemLtreePaths

Inherits:
OnlineMigrations::BackgroundMigration
  • Object
show all
Defined in:
lib/online_migrations/background_migrations/backfill_item_ltree_paths.rb

Overview

Background migration to backfill ltree paths on items table
Enqueued by: 20251205000003_enqueue_backfill_item_ltree_paths.rb

This migration populates the following columns:

  • primary_pl_path_ids / primary_pl_path_slugs (from primary_product_line)
  • all_pl_paths_ids (from all associated product_lines via item_product_lines)
  • pc_path_ids / pc_path_slugs (from product_category)

Delegated Instance Attributes collapse

Instance Method Summary collapse

Instance Method Details

#countObject

Alias for Item#count

Returns:

  • (Object)

    Item#count

See Also:



35
# File 'lib/online_migrations/background_migrations/backfill_item_ltree_paths.rb', line 35

delegate :count, to: :Item

#process_batch(items) ⇒ Object



18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
# File 'lib/online_migrations/background_migrations/backfill_item_ltree_paths.rb', line 18

def process_batch(items)
  items.each do |item|
    # Build the ltree paths without triggering callbacks
    item.sync_ltree_paths!

    # Update columns directly to avoid callbacks
    item.update_columns(
      primary_pl_path_ids: item.primary_pl_path_ids,
      primary_pl_path_slugs: item.primary_pl_path_slugs,
      all_pl_paths_ids: item.all_pl_paths_ids,
      pc_path_ids: item.pc_path_ids,
      pc_path_slugs: item.pc_path_slugs
    )
  end
end

#relationObject



14
15
16
# File 'lib/online_migrations/background_migrations/backfill_item_ltree_paths.rb', line 14

def relation
  Item.all
end