diff --git a/packages/api/src/db/queries.ts b/packages/api/src/db/queries.ts index e3d0308..5e148e6 100644 --- a/packages/api/src/db/queries.ts +++ b/packages/api/src/db/queries.ts @@ -352,10 +352,13 @@ export async function getFlexoptixSuggestions(switchId: string) { -- bounded by the port speed so corrupt/oversized records cannot leak in. SELECT DISTINCT -- numeric speed prefix: 100G->100, 25G->25, 2.5G->2.5, 100M->0.1, 800G->800 + -- speed token may be at the start ('100G_QSFP28') or embedded + -- ('max_per_slot_100G_QSFP28' on chassis switches). Match before the cage. CASE - WHEN k ~ '^[0-9.]+M' THEN (substring(k from '^([0-9.]+)M')::numeric / 1000) - WHEN k ~ '^[0-9.]+G' THEN substring(k from '^([0-9.]+)G')::numeric - WHEN k ~ '^[0-9.]+T' THEN (substring(k from '^([0-9.]+)T')::numeric * 1000) + WHEN k ~ '[0-9.]+M[_A-Za-z]' THEN (substring(k from '([0-9.]+)M[_A-Za-z]')::numeric / 1000) + WHEN k ~ '[0-9.]+T[_A-Za-z]' THEN (substring(k from '([0-9.]+)T[_A-Za-z]')::numeric * 1000) + WHEN k ~ '[0-9.]+G[_A-Za-z]' THEN substring(k from '([0-9.]+)G[_A-Za-z]')::numeric + WHEN k ~ '[0-9.]+G$' THEN substring(k from '([0-9.]+)G$')::numeric ELSE NULL END AS port_speed, -- the port's specific cage type (determines which modules mechanically seat)