Files
orderPRO/database/migrations/20260407_000078_reverse_status_mapping_keys.sql
2026-04-07 10:44:03 +02:00

59 lines
2.6 KiB
SQL

-- Phase 74: Reverse status mapping direction
-- Changes unique key from external_status_code to orderpro_status_code
-- so UI shows orderPRO statuses as rows with external status dropdown
-- ============================================================
-- 1. order_status_mappings (shopPRO)
-- ============================================================
-- Remove duplicates on (integration_id, orderpro_status_code) keeping newest row
DELETE osm1 FROM order_status_mappings osm1
INNER JOIN order_status_mappings osm2
ON osm1.integration_id = osm2.integration_id
AND osm1.orderpro_status_code = osm2.orderpro_status_code
AND osm1.id < osm2.id;
-- Drop old unique key on (integration_id, shoppro_status_code)
ALTER TABLE order_status_mappings
DROP INDEX order_status_mappings_integration_shoppro_unique;
-- Add regular index on (integration_id, shoppro_status_code) for pull lookups
ALTER TABLE order_status_mappings
ADD INDEX order_status_mappings_integration_shoppro_idx (integration_id, shoppro_status_code);
-- Drop old non-unique index on orderpro_status_code
ALTER TABLE order_status_mappings
DROP INDEX order_status_mappings_orderpro_idx;
-- Add new unique key on (integration_id, orderpro_status_code)
ALTER TABLE order_status_mappings
ADD UNIQUE INDEX order_status_mappings_integration_orderpro_unique (integration_id, orderpro_status_code);
-- ============================================================
-- 2. allegro_order_status_mappings (Allegro)
-- ============================================================
-- Remove duplicates on orderpro_status_code (non-NULL only) keeping newest row
DELETE asm1 FROM allegro_order_status_mappings asm1
INNER JOIN allegro_order_status_mappings asm2
ON asm1.orderpro_status_code = asm2.orderpro_status_code
AND asm1.orderpro_status_code IS NOT NULL
AND asm2.orderpro_status_code IS NOT NULL
AND asm1.id < asm2.id;
-- Drop old unique key on allegro_status_code
ALTER TABLE allegro_order_status_mappings
DROP INDEX allegro_order_status_mappings_code_unique;
-- Add regular index on allegro_status_code for pull lookups
ALTER TABLE allegro_order_status_mappings
ADD INDEX allegro_order_status_mappings_allegro_code_idx (allegro_status_code);
-- Drop old non-unique index on orderpro_status_code
ALTER TABLE allegro_order_status_mappings
DROP INDEX allegro_order_status_mappings_orderpro_code_idx;
-- Add new unique key on orderpro_status_code (NULLs allowed — multiple discovered-only rows OK)
ALTER TABLE allegro_order_status_mappings
ADD UNIQUE INDEX allegro_order_status_mappings_orderpro_unique (orderpro_status_code);