m's actual hardware: IOx-3/6/8 are power strips, not USB hubs. v4 seeded them as Power × 1 + USB × N which doesn't match reality. Multi-plug 3-6 and Wifi-plug from v5 lumped every Power port on the same bottom edge without distinguishing input from outputs. Migration 006 wipes and re-seeds the port profile for all 8 power-distribution types with the canonical 2-row layout: Power In × 1 on top (back, sort_order 0) Power Out × N on bottom (front, sort_order 1) N for each: IOx-3 / Multi-plug 3 → 3 IOx-6 / Multi-plug 6 → 6 IOx-8 → 8 Multi-plug 4 → 4 Multi-plug 5 → 5 Wifi-plug → 1 (pass-through outlet) Existing device instances keep their already-seeded ports per design §2.3 (ports are instance-owned). m needs to delete + recreate any IOx-* / Multi-plug-* / Wifi-plug instances to pick up the new layout. Tests: - TestSeed_PortProfiles: comments updated; totals unchanged (Power In 1 + Power Out N matches old Power 1 + USB N / Power N). - TestSeed_PowerHubs (was TestSeed_PowerCatalog, rewritten): table-drives all 8 affected types. Asserts exactly 2 port rows — top/Power In/1 and bottom/Power Out/N — plus kind/icon for the v5 catalog entries. Design §2.2 catalog table refreshed to match.
88 lines
5.2 KiB
SQL
88 lines
5.2 KiB
SQL
-- mCables v6 — fix IOx-* and Multi-plug-* + Wifi-plug port profiles.
|
||
--
|
||
-- v4 seeded the IOx-3 / IOx-6 / IOx-8 as USB hubs (Power × 1 + USB × N),
|
||
-- but m's physical IOx-* devices are power strips (1 power input on
|
||
-- the back, N power outputs on the front). v5's Multi-plug 3/4/5/6
|
||
-- profiles also lumped every Power port on the bottom edge without
|
||
-- distinguishing the input from the outputs.
|
||
--
|
||
-- This migration replaces the port profile for the 8 power-distribution
|
||
-- types with the canonical "1 in (top/back) + N out (bottom/front)"
|
||
-- layout. Convention: top=back, bottom=front.
|
||
--
|
||
-- N for each type:
|
||
-- IOx-3 / Multi-plug 3 → 3 outputs
|
||
-- IOx-6 → 6 outputs
|
||
-- IOx-8 → 8 outputs
|
||
-- Multi-plug 4 → 4 outputs
|
||
-- Multi-plug 5 → 5 outputs
|
||
-- Multi-plug 6 → 6 outputs
|
||
-- Wifi-plug → 1 output (it's a pass-through outlet)
|
||
--
|
||
-- Existing devices m may have created with the old profile keep their
|
||
-- already-seeded ports — per design §2.3, ports are instance-owned. To
|
||
-- get the new layout on an existing instance, delete it and re-create.
|
||
--
|
||
-- cable_types id 1 = Power (seeded in 001).
|
||
|
||
-- 1) Drop the existing port-profile rows for each affected type.
|
||
DELETE FROM device_type_ports
|
||
WHERE device_type_id IN (
|
||
SELECT id FROM device_types
|
||
WHERE project_id IS NULL
|
||
AND name IN (
|
||
'IOx-3', 'IOx-6', 'IOx-8',
|
||
'Multi-plug 3', 'Multi-plug 4', 'Multi-plug 5', 'Multi-plug 6',
|
||
'Wifi-plug'
|
||
)
|
||
);
|
||
|
||
-- 2) Insert the canonical (1 in on top, N out on bottom) profile.
|
||
-- IOx-3 — 1 in + 3 out
|
||
INSERT INTO device_type_ports (device_type_id, cable_type_id, label_prefix, count, edge, sort_order)
|
||
SELECT id, 1, 'Power In', 1, 'top', 0 FROM device_types WHERE name='IOx-3' AND project_id IS NULL;
|
||
INSERT INTO device_type_ports (device_type_id, cable_type_id, label_prefix, count, edge, sort_order)
|
||
SELECT id, 1, 'Power Out', 3, 'bottom', 1 FROM device_types WHERE name='IOx-3' AND project_id IS NULL;
|
||
|
||
-- IOx-6 — 1 in + 6 out
|
||
INSERT INTO device_type_ports (device_type_id, cable_type_id, label_prefix, count, edge, sort_order)
|
||
SELECT id, 1, 'Power In', 1, 'top', 0 FROM device_types WHERE name='IOx-6' AND project_id IS NULL;
|
||
INSERT INTO device_type_ports (device_type_id, cable_type_id, label_prefix, count, edge, sort_order)
|
||
SELECT id, 1, 'Power Out', 6, 'bottom', 1 FROM device_types WHERE name='IOx-6' AND project_id IS NULL;
|
||
|
||
-- IOx-8 — 1 in + 8 out
|
||
INSERT INTO device_type_ports (device_type_id, cable_type_id, label_prefix, count, edge, sort_order)
|
||
SELECT id, 1, 'Power In', 1, 'top', 0 FROM device_types WHERE name='IOx-8' AND project_id IS NULL;
|
||
INSERT INTO device_type_ports (device_type_id, cable_type_id, label_prefix, count, edge, sort_order)
|
||
SELECT id, 1, 'Power Out', 8, 'bottom', 1 FROM device_types WHERE name='IOx-8' AND project_id IS NULL;
|
||
|
||
-- Multi-plug 3 — 1 in + 3 out
|
||
INSERT INTO device_type_ports (device_type_id, cable_type_id, label_prefix, count, edge, sort_order)
|
||
SELECT id, 1, 'Power In', 1, 'top', 0 FROM device_types WHERE name='Multi-plug 3' AND project_id IS NULL;
|
||
INSERT INTO device_type_ports (device_type_id, cable_type_id, label_prefix, count, edge, sort_order)
|
||
SELECT id, 1, 'Power Out', 3, 'bottom', 1 FROM device_types WHERE name='Multi-plug 3' AND project_id IS NULL;
|
||
|
||
-- Multi-plug 4 — 1 in + 4 out
|
||
INSERT INTO device_type_ports (device_type_id, cable_type_id, label_prefix, count, edge, sort_order)
|
||
SELECT id, 1, 'Power In', 1, 'top', 0 FROM device_types WHERE name='Multi-plug 4' AND project_id IS NULL;
|
||
INSERT INTO device_type_ports (device_type_id, cable_type_id, label_prefix, count, edge, sort_order)
|
||
SELECT id, 1, 'Power Out', 4, 'bottom', 1 FROM device_types WHERE name='Multi-plug 4' AND project_id IS NULL;
|
||
|
||
-- Multi-plug 5 — 1 in + 5 out
|
||
INSERT INTO device_type_ports (device_type_id, cable_type_id, label_prefix, count, edge, sort_order)
|
||
SELECT id, 1, 'Power In', 1, 'top', 0 FROM device_types WHERE name='Multi-plug 5' AND project_id IS NULL;
|
||
INSERT INTO device_type_ports (device_type_id, cable_type_id, label_prefix, count, edge, sort_order)
|
||
SELECT id, 1, 'Power Out', 5, 'bottom', 1 FROM device_types WHERE name='Multi-plug 5' AND project_id IS NULL;
|
||
|
||
-- Multi-plug 6 — 1 in + 6 out
|
||
INSERT INTO device_type_ports (device_type_id, cable_type_id, label_prefix, count, edge, sort_order)
|
||
SELECT id, 1, 'Power In', 1, 'top', 0 FROM device_types WHERE name='Multi-plug 6' AND project_id IS NULL;
|
||
INSERT INTO device_type_ports (device_type_id, cable_type_id, label_prefix, count, edge, sort_order)
|
||
SELECT id, 1, 'Power Out', 6, 'bottom', 1 FROM device_types WHERE name='Multi-plug 6' AND project_id IS NULL;
|
||
|
||
-- Wifi-plug — 1 in + 1 out (pass-through outlet)
|
||
INSERT INTO device_type_ports (device_type_id, cable_type_id, label_prefix, count, edge, sort_order)
|
||
SELECT id, 1, 'Power In', 1, 'top', 0 FROM device_types WHERE name='Wifi-plug' AND project_id IS NULL;
|
||
INSERT INTO device_type_ports (device_type_id, cable_type_id, label_prefix, count, edge, sort_order)
|
||
SELECT id, 1, 'Power Out', 1, 'bottom', 1 FROM device_types WHERE name='Wifi-plug' AND project_id IS NULL;
|