mirror of
https://github.com/openfoodfoundation/openfoodnetwork
synced 2026-02-05 22:26:07 +00:00
There's only 5 in UK prod. keeping them is easier than figuring out if it's safe to delete.
87 lines
2.2 KiB
Ruby
87 lines
2.2 KiB
Ruby
class RemoveMasterVariants < ActiveRecord::Migration[7.0]
|
|
def change
|
|
if ActiveRecord::Base.connection.table_exists? "spree_option_values_variants"
|
|
delete_master_option_values
|
|
end
|
|
|
|
handle_master_line_items
|
|
handle_master_exchange_variants
|
|
delete_master_inventory_units
|
|
delete_master_variant_prices
|
|
delete_master_stock_items
|
|
delete_master_variants
|
|
end
|
|
|
|
private
|
|
|
|
def handle_master_line_items
|
|
ActiveRecord::Base.connection.execute(<<-SQL
|
|
UPDATE spree_variants
|
|
SET is_master = false
|
|
FROM spree_line_items
|
|
WHERE spree_variants.is_master = true
|
|
AND spree_variants.id = spree_line_items.variant_id
|
|
SQL
|
|
)
|
|
end
|
|
|
|
def handle_master_exchange_variants
|
|
ActiveRecord::Base.connection.execute(<<-SQL
|
|
UPDATE spree_variants
|
|
SET is_master = false
|
|
FROM exchange_variants
|
|
WHERE spree_variants.is_master = true
|
|
AND spree_variants.id = exchange_variants.variant_id
|
|
SQL
|
|
)
|
|
end
|
|
|
|
def delete_master_inventory_units
|
|
ActiveRecord::Base.connection.execute(<<-SQL
|
|
DELETE FROM spree_inventory_units
|
|
USING spree_variants
|
|
WHERE spree_variants.is_master = true
|
|
AND spree_variants.id = spree_inventory_units.variant_id
|
|
SQL
|
|
)
|
|
end
|
|
|
|
def delete_master_option_values
|
|
ActiveRecord::Base.connection.execute(<<-SQL
|
|
DELETE FROM spree_option_values_variants
|
|
USING spree_variants
|
|
WHERE spree_variants.is_master = true
|
|
AND spree_variants.id = spree_option_values_variants.variant_id
|
|
SQL
|
|
)
|
|
end
|
|
|
|
def delete_master_variant_prices
|
|
ActiveRecord::Base.connection.execute(<<-SQL
|
|
DELETE FROM spree_prices
|
|
USING spree_variants
|
|
WHERE spree_variants.is_master = true
|
|
AND spree_variants.id = spree_prices.variant_id
|
|
SQL
|
|
)
|
|
end
|
|
|
|
def delete_master_stock_items
|
|
ActiveRecord::Base.connection.execute(<<-SQL
|
|
DELETE FROM spree_stock_items
|
|
USING spree_variants
|
|
WHERE spree_variants.is_master = true
|
|
AND spree_variants.id = spree_stock_items.variant_id
|
|
SQL
|
|
)
|
|
end
|
|
|
|
def delete_master_variants
|
|
ActiveRecord::Base.connection.execute(<<-SQL
|
|
DELETE FROM spree_variants
|
|
WHERE is_master = true
|
|
SQL
|
|
)
|
|
end
|
|
end
|