bmc_hub/migrations/226_hardware_location_display_order.sql

17 lines
615 B
MySQL
Raw Normal View History

ALTER TABLE hardware_assets
ADD COLUMN IF NOT EXISTS location_display_order INTEGER;
WITH ordered AS (
SELECT id, ROW_NUMBER() OVER (PARTITION BY current_location_id ORDER BY brand, model, serial_number, id) AS row_number
FROM hardware_assets
WHERE current_location_id IS NOT NULL AND location_display_order IS NULL
)
UPDATE hardware_assets h
SET location_display_order = ordered.row_number
FROM ordered
WHERE h.id = ordered.id;
CREATE INDEX IF NOT EXISTS idx_hardware_assets_location_display_order
ON hardware_assets(current_location_id, location_display_order)
WHERE deleted_at IS NULL;