Class: OnlineMigrations::DataMigrations::BackfillItemLtreePaths

Inherits:
OnlineMigrations::DataMigration
  • Object
show all
Defined in:
lib/online_migrations/data_migrations/backfill_item_ltree_paths.rb

Overview

Backfill ltree paths on items table.
Enqueued by: 20251205000003_enqueue_backfill_item_ltree_paths.rb

Populates:

  • 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)

Constant Summary collapse

BATCH_SIZE =

Batch size.

1_000

Delegated Instance Attributes collapse

Instance Method Summary collapse

Instance Method Details

#collectionObject



16
17
18
# File 'lib/online_migrations/data_migrations/backfill_item_ltree_paths.rb', line 16

def collection
  Item.in_batches(of: BATCH_SIZE)
end

#countObject

Alias for Item#count

Returns:

  • (Object)

    Item#count

See Also:



36
# File 'lib/online_migrations/data_migrations/backfill_item_ltree_paths.rb', line 36

delegate :count, to: :Item

#process(items) ⇒ Object



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

def process(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