Seed the public catalog from domain/library.ts

- Catalog table ids (device_categories, port_types, cable_types,
  device_templates) switch from uuid to text so the existing stable,
  human-readable ids (pt-hdmi, dt-display, ...) survive the move
  instead of every diagram's references silently orphaning.
- supabase/seed.sql is generated (scripts/generate-seed.mjs), not
  hand-written, so the seed data can't drift from the actual source of
  truth in domain/library.ts. Re-run the script after editing the
  built-in library.
- Also committing ideas.md/organized-ideas.md, which have been driving
  every backend decision this whole project but were never actually
  checked in.

RLS test suite re-run clean (23/23) after both the schema change and
the seed.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_017DUU6CnxECCDeqDNYJgr5x
This commit is contained in:
2026-09-07 23:02:12 -05:00
co-authored by Claude Sonnet 5
parent 2f1b83e0a9
commit 93cb4a9617
5 changed files with 495 additions and 0 deletions
+125
View File
@@ -0,0 +1,125 @@
-- Generated by scripts/generate-seed.mjs from src/domain/library.ts. Do not hand-edit —
-- re-run the script after changing the built-in library instead.
-- Seeds the public catalog: is_public = true, owner_id = null (system-owned).
-- Device categories
insert into public.device_categories (id, name, is_public) values ('display', 'Display', true);
insert into public.device_categories (id, name, is_public) values ('video-source', 'Video Source', true);
insert into public.device_categories (id, name, is_public) values ('audio-source', 'Audio Source', true);
insert into public.device_categories (id, name, is_public) values ('synth', 'Synthesizer / Sound Module', true);
insert into public.device_categories (id, name, is_public) values ('mixer', 'Mixer', true);
insert into public.device_categories (id, name, is_public) values ('amplifier', 'Amplifier / Receiver', true);
insert into public.device_categories (id, name, is_public) values ('speaker', 'Speaker', true);
insert into public.device_categories (id, name, is_public) values ('network', 'Network', true);
insert into public.device_categories (id, name, is_public) values ('computer', 'Computer', true);
insert into public.device_categories (id, name, is_public) values ('camera', 'Camera', true);
insert into public.device_categories (id, name, is_public) values ('control', 'Control', true);
insert into public.device_categories (id, name, is_public) values ('power', 'Power', true);
insert into public.device_categories (id, name, is_public) values ('adapter', 'Adapter / Converter', true);
insert into public.device_categories (id, name, is_public) values ('other', 'Other', true);
-- Port types
insert into public.port_types (id, name, category, family, compatible_family_ids, max_connections, is_public) values ('pt-hdmi', 'HDMI', 'video', 'hdmi', '{}', null, true);
insert into public.port_types (id, name, category, family, compatible_family_ids, max_connections, is_public) values ('pt-displayport', 'DisplayPort', 'video', 'displayport', '{}', null, true);
insert into public.port_types (id, name, category, family, compatible_family_ids, max_connections, is_public) values ('pt-sdi', 'SDI (BNC)', 'video', 'sdi', '{}', null, true);
insert into public.port_types (id, name, category, family, compatible_family_ids, max_connections, is_public) values ('pt-vga', 'VGA', 'video', 'vga', '{}', null, true);
insert into public.port_types (id, name, category, family, compatible_family_ids, max_connections, is_public) values ('pt-composite', 'Composite Video (RCA)', 'video', 'rca-composite', '{}', null, true);
insert into public.port_types (id, name, category, family, compatible_family_ids, max_connections, is_public) values ('pt-xlr', 'XLR (Balanced Audio)', 'audio', 'xlr', '{}', null, true);
insert into public.port_types (id, name, category, family, compatible_family_ids, max_connections, is_public) values ('pt-trs-quarter', '1/4" TRS (Balanced Audio)', 'audio', 'trs-quarter', '{}', null, true);
insert into public.port_types (id, name, category, family, compatible_family_ids, max_connections, is_public) values ('pt-ts-quarter', '1/4" TS (Unbalanced Audio)', 'audio', 'ts-quarter', '{}', null, true);
insert into public.port_types (id, name, category, family, compatible_family_ids, max_connections, is_public) values ('pt-trs-mini', '3.5mm TRS (Balanced Audio)', 'audio', 'trs-mini', '{}', null, true);
insert into public.port_types (id, name, category, family, compatible_family_ids, max_connections, is_public) values ('pt-ts-mini', '3.5mm (Unbalanced Audio)', 'audio', 'ts-mini', '{}', null, true);
insert into public.port_types (id, name, category, family, compatible_family_ids, max_connections, is_public) values ('pt-trs-quarter-combo', '1/4" TRS/TS (Balanced or Unbalanced)', 'audio', 'trs-quarter-combo', '{"trs-quarter","ts-quarter"}', null, true);
insert into public.port_types (id, name, category, family, compatible_family_ids, max_connections, is_public) values ('pt-trs-mini-combo', '3.5mm TRS/TS (Balanced or Unbalanced)', 'audio', 'trs-mini-combo', '{"trs-mini","ts-mini"}', null, true);
insert into public.port_types (id, name, category, family, compatible_family_ids, max_connections, is_public) values ('pt-rca-audio', 'RCA (Stereo Audio)', 'audio', 'rca-audio', '{}', null, true);
insert into public.port_types (id, name, category, family, compatible_family_ids, max_connections, is_public) values ('pt-speakon', 'Speakon', 'audio', 'speakon', '{}', null, true);
insert into public.port_types (id, name, category, family, compatible_family_ids, max_connections, is_public) values ('pt-speaker-wire', 'Speaker Wire (Bare/Terminal)', 'audio', 'speaker-wire', '{}', 1, true);
insert into public.port_types (id, name, category, family, compatible_family_ids, max_connections, is_public) values ('pt-toslink', 'TOSLINK (Optical)', 'audio', 'toslink', '{}', null, true);
insert into public.port_types (id, name, category, family, compatible_family_ids, max_connections, is_public) values ('pt-cat-rj45', 'Cat5e/6 (RJ45)', 'network', 'cat-rj45', '{"cat-rj45"}', null, true);
insert into public.port_types (id, name, category, family, compatible_family_ids, max_connections, is_public) values ('pt-fiber-lc', 'Fiber (LC)', 'network', 'fiber-lc', '{}', null, true);
insert into public.port_types (id, name, category, family, compatible_family_ids, max_connections, is_public) values ('pt-usb-a', 'USB-A (Unspecified)', 'usb', 'usb-a', '{}', null, true);
insert into public.port_types (id, name, category, family, compatible_family_ids, max_connections, is_public) values ('pt-usb-c', 'USB-C (Unspecified)', 'usb', 'usb-c', '{}', null, true);
insert into public.port_types (id, name, category, family, compatible_family_ids, max_connections, is_public) values ('pt-usb-a-host', 'USB-A (Host)', 'usb', 'usb-a-host', '{"usb-a-device","usb-a-to-b"}', null, true);
insert into public.port_types (id, name, category, family, compatible_family_ids, max_connections, is_public) values ('pt-usb-a-device', 'USB-A (Device)', 'usb', 'usb-a-device', '{"usb-a-host"}', null, true);
insert into public.port_types (id, name, category, family, compatible_family_ids, max_connections, is_public) values ('pt-usb-c-host', 'USB-C (Host)', 'usb', 'usb-c-host', '{"usb-c-device","usb-c-to-b"}', null, true);
insert into public.port_types (id, name, category, family, compatible_family_ids, max_connections, is_public) values ('pt-usb-c-device', 'USB-C (Device)', 'usb', 'usb-c-device', '{"usb-c-host"}', null, true);
insert into public.port_types (id, name, category, family, compatible_family_ids, max_connections, is_public) values ('pt-usb-b-device', 'USB-B (Device)', 'usb', 'usb-b-device', '{"usb-a-to-b","usb-c-to-b"}', null, true);
insert into public.port_types (id, name, category, family, compatible_family_ids, max_connections, is_public) values ('pt-iec-power', 'IEC C13/C14 Power', 'power', 'iec-power', '{}', null, true);
insert into public.port_types (id, name, category, family, compatible_family_ids, max_connections, is_public) values ('pt-nema-power', 'NEMA 5-15 Power', 'power', 'nema-power', '{}', null, true);
insert into public.port_types (id, name, category, family, compatible_family_ids, max_connections, is_public) values ('pt-rs232', 'RS-232 (Serial)', 'control', 'rs232', '{}', null, true);
insert into public.port_types (id, name, category, family, compatible_family_ids, max_connections, is_public) values ('pt-ir', 'IR (3.5mm Emitter/Receiver)', 'control', 'ir', '{}', null, true);
insert into public.port_types (id, name, category, family, compatible_family_ids, max_connections, is_public) values ('pt-midi-din', 'MIDI (5-Pin DIN)', 'control', 'midi-din', '{}', null, true);
insert into public.port_types (id, name, category, family, compatible_family_ids, max_connections, is_public) values ('pt-midi-trs-a', '3.5mm MIDI (Type A)', 'control', 'midi-trs-a', '{}', null, true);
insert into public.port_types (id, name, category, family, compatible_family_ids, max_connections, is_public) values ('pt-midi-trs-b', '3.5mm MIDI (Type B)', 'control', 'midi-trs-b', '{}', null, true);
-- Cable types
insert into public.cable_types (id, name, family, family2, unit, is_public) values ('ct-hdmi', 'HDMI Cable', 'hdmi', null, 'ft', true);
insert into public.cable_types (id, name, family, family2, unit, is_public) values ('ct-displayport', 'DisplayPort Cable', 'displayport', null, 'ft', true);
insert into public.cable_types (id, name, family, family2, unit, is_public) values ('ct-sdi', 'SDI Coax (BNC)', 'sdi', null, 'ft', true);
insert into public.cable_types (id, name, family, family2, unit, is_public) values ('ct-vga', 'VGA Cable', 'vga', null, 'ft', true);
insert into public.cable_types (id, name, family, family2, unit, is_public) values ('ct-composite', 'Composite Video Cable (RCA)', 'rca-composite', null, 'ft', true);
insert into public.cable_types (id, name, family, family2, unit, is_public) values ('ct-xlr', 'XLR Cable', 'xlr', null, 'ft', true);
insert into public.cable_types (id, name, family, family2, unit, is_public) values ('ct-xlr-to-trs-quarter', 'XLR to 1/4" TRS Adapter Cable', 'xlr', 'trs-quarter', 'ft', true);
insert into public.cable_types (id, name, family, family2, unit, is_public) values ('ct-trs-quarter', '1/4" TRS Cable (Balanced)', 'trs-quarter', null, 'ft', true);
insert into public.cable_types (id, name, family, family2, unit, is_public) values ('ct-ts-quarter', '1/4" TS Cable (Instrument/Unbalanced)', 'ts-quarter', null, 'ft', true);
insert into public.cable_types (id, name, family, family2, unit, is_public) values ('ct-trs-mini', '3.5mm TRS Cable (Balanced)', 'trs-mini', null, 'ft', true);
insert into public.cable_types (id, name, family, family2, unit, is_public) values ('ct-ts-mini', '3.5mm Cable (Unbalanced)', 'ts-mini', null, 'ft', true);
insert into public.cable_types (id, name, family, family2, unit, is_public) values ('ct-rca-audio', 'RCA Stereo Audio Cable', 'rca-audio', null, 'ft', true);
insert into public.cable_types (id, name, family, family2, unit, is_public) values ('ct-speakon', 'Speakon Cable', 'speakon', null, 'ft', true);
insert into public.cable_types (id, name, family, family2, unit, is_public) values ('ct-speaker-wire', 'Speaker Wire (14/2)', 'speaker-wire', null, 'ft', true);
insert into public.cable_types (id, name, family, family2, unit, is_public) values ('ct-toslink', 'TOSLINK Optical Cable', 'toslink', null, 'ft', true);
insert into public.cable_types (id, name, family, family2, unit, is_public) values ('ct-cat6', 'Cat6 Cable', 'cat-rj45', null, 'ft', true);
insert into public.cable_types (id, name, family, family2, unit, is_public) values ('ct-fiber-lc', 'Fiber LC-LC Cable', 'fiber-lc', null, 'ft', true);
insert into public.cable_types (id, name, family, family2, unit, is_public) values ('ct-usb-a', 'USB-A to USB-A Cable', 'usb-a', null, 'ft', true);
insert into public.cable_types (id, name, family, family2, unit, is_public) values ('ct-usb-c', 'USB-C Cable', 'usb-c', null, 'ft', true);
insert into public.cable_types (id, name, family, family2, unit, is_public) values ('ct-usb-a-host-device', 'USB-A Cable (Host ↔ Device)', 'usb-a-host', null, 'ft', true);
insert into public.cable_types (id, name, family, family2, unit, is_public) values ('ct-usb-c-host-device', 'USB-C Cable (Host ↔ Device)', 'usb-c-host', null, 'ft', true);
insert into public.cable_types (id, name, family, family2, unit, is_public) values ('ct-usb-a-to-b', 'USB-A to USB-B Cable', 'usb-a-to-b', null, 'ft', true);
insert into public.cable_types (id, name, family, family2, unit, is_public) values ('ct-usb-c-to-b', 'USB-C to USB-B Cable', 'usb-c-to-b', null, 'ft', true);
insert into public.cable_types (id, name, family, family2, unit, is_public) values ('ct-iec-power', 'IEC C13 Power Cable', 'iec-power', null, 'ft', true);
insert into public.cable_types (id, name, family, family2, unit, is_public) values ('ct-nema-power', 'NEMA 5-15 Extension Cord', 'nema-power', null, 'ft', true);
insert into public.cable_types (id, name, family, family2, unit, is_public) values ('ct-rs232', 'RS-232 Serial Cable', 'rs232', null, 'ft', true);
insert into public.cable_types (id, name, family, family2, unit, is_public) values ('ct-ir', 'IR Emitter Cable', 'ir', null, 'ft', true);
insert into public.cable_types (id, name, family, family2, unit, is_public) values ('ct-midi-din', 'MIDI Cable (5-Pin DIN)', 'midi-din', null, 'ft', true);
insert into public.cable_types (id, name, family, family2, unit, is_public) values ('ct-midi-trs-a', '3.5mm MIDI Cable (Type A)', 'midi-trs-a', null, 'ft', true);
insert into public.cable_types (id, name, family, family2, unit, is_public) values ('ct-midi-trs-b', '3.5mm MIDI Cable (Type B)', 'midi-trs-b', null, 'ft', true);
-- Device templates + their ports
insert into public.device_templates (id, name, category_id, is_public) values ('dt-display', 'Display (TV / Projector)', 'display', true);
insert into public.device_template_ports (id, device_template_id, name, direction, port_type_id, sort_order) values ('62079818-e050-4dee-8065-4eedd40f4c02', 'dt-display', 'HDMI In 1', 'input', 'pt-hdmi', 0);
insert into public.device_template_ports (id, device_template_id, name, direction, port_type_id, sort_order) values ('04eeee4d-ac8e-4aef-a2ae-1e4dd2e4fc2a', 'dt-display', 'HDMI In 2', 'input', 'pt-hdmi', 1);
insert into public.device_template_ports (id, device_template_id, name, direction, port_type_id, sort_order) values ('182dd666-cfe7-489a-97e4-78e2fdf91668', 'dt-display', 'Power In', 'input', 'pt-iec-power', 2);
insert into public.device_templates (id, name, category_id, is_public) values ('dt-media-player', 'Media Player / Streamer', 'video-source', true);
insert into public.device_template_ports (id, device_template_id, name, direction, port_type_id, sort_order) values ('21d1e934-948b-4060-afc1-8f8827223ed7', 'dt-media-player', 'HDMI Out', 'output', 'pt-hdmi', 0);
insert into public.device_template_ports (id, device_template_id, name, direction, port_type_id, sort_order) values ('e9123870-9f39-4703-9d2c-56cff2bf5162', 'dt-media-player', 'Power In', 'input', 'pt-nema-power', 1);
insert into public.device_templates (id, name, category_id, is_public) values ('dt-avr', 'AV Receiver', 'amplifier', true);
insert into public.device_template_ports (id, device_template_id, name, direction, port_type_id, sort_order) values ('1ab3b4b4-51db-46bf-b473-42203cc522d9', 'dt-avr', 'HDMI In 1', 'input', 'pt-hdmi', 0);
insert into public.device_template_ports (id, device_template_id, name, direction, port_type_id, sort_order) values ('66536c92-a719-46a1-bb5e-4e15b4e3aa15', 'dt-avr', 'HDMI In 2', 'input', 'pt-hdmi', 1);
insert into public.device_template_ports (id, device_template_id, name, direction, port_type_id, sort_order) values ('6b4611a2-f2ec-409f-a89d-97bfa70fdd1d', 'dt-avr', 'HDMI In 3', 'input', 'pt-hdmi', 2);
insert into public.device_template_ports (id, device_template_id, name, direction, port_type_id, sort_order) values ('345d6b0e-d260-4b7c-be62-cadd581890ec', 'dt-avr', 'HDMI Out (Display)', 'output', 'pt-hdmi', 3);
insert into public.device_template_ports (id, device_template_id, name, direction, port_type_id, sort_order) values ('07d68503-7f75-4783-be3f-db34b3066f83', 'dt-avr', 'Speaker Out L', 'output', 'pt-speaker-wire', 4);
insert into public.device_template_ports (id, device_template_id, name, direction, port_type_id, sort_order) values ('f68bf47e-dd17-4b64-84d9-ada7b3b75132', 'dt-avr', 'Speaker Out R', 'output', 'pt-speaker-wire', 5);
insert into public.device_template_ports (id, device_template_id, name, direction, port_type_id, sort_order) values ('7c6780fd-a26c-4c09-ab6c-5417ed9a31de', 'dt-avr', 'Power In', 'input', 'pt-iec-power', 6);
insert into public.device_templates (id, name, category_id, is_public) values ('dt-speaker', 'Speaker (Passive)', 'speaker', true);
insert into public.device_template_ports (id, device_template_id, name, direction, port_type_id, sort_order) values ('3a0157b0-635a-43cb-b874-446c70ab32f2', 'dt-speaker', 'Speaker In', 'input', 'pt-speaker-wire', 0);
insert into public.device_templates (id, name, category_id, is_public) values ('dt-switch', 'Network Switch', 'network', true);
insert into public.device_template_ports (id, device_template_id, name, direction, port_type_id, sort_order) values ('8167e698-3693-4256-aa84-80de3638710c', 'dt-switch', 'Port 1', 'bidirectional', 'pt-cat-rj45', 0);
insert into public.device_template_ports (id, device_template_id, name, direction, port_type_id, sort_order) values ('ce4e8e83-0c91-422d-88df-6caf6af5a145', 'dt-switch', 'Port 2', 'bidirectional', 'pt-cat-rj45', 1);
insert into public.device_template_ports (id, device_template_id, name, direction, port_type_id, sort_order) values ('f215e7ab-2c12-46c9-989e-ee6d55c2fa1f', 'dt-switch', 'Port 3', 'bidirectional', 'pt-cat-rj45', 2);
insert into public.device_template_ports (id, device_template_id, name, direction, port_type_id, sort_order) values ('baf456fc-643a-42e4-8981-ce22eefa94b3', 'dt-switch', 'Port 4', 'bidirectional', 'pt-cat-rj45', 3);
insert into public.device_template_ports (id, device_template_id, name, direction, port_type_id, sort_order) values ('42c14e32-7315-4008-a8d9-32621e4d9569', 'dt-switch', 'Power In', 'input', 'pt-iec-power', 4);
insert into public.device_templates (id, name, category_id, is_public) values ('dt-camera', 'PTZ Camera', 'camera', true);
insert into public.device_template_ports (id, device_template_id, name, direction, port_type_id, sort_order) values ('83e946f2-2ad3-4e31-889d-fccddf2bebde', 'dt-camera', 'SDI Out', 'output', 'pt-sdi', 0);
insert into public.device_template_ports (id, device_template_id, name, direction, port_type_id, sort_order) values ('439abff2-ff23-4bc1-b096-6f67e9a6fc32', 'dt-camera', 'Control (RJ45)', 'bidirectional', 'pt-cat-rj45', 1);
insert into public.device_template_ports (id, device_template_id, name, direction, port_type_id, sort_order) values ('ea9355fc-3668-4085-9787-5439d9485a04', 'dt-camera', 'Power In', 'input', 'pt-nema-power', 2);
insert into public.device_templates (id, name, category_id, is_public) values ('dt-computer', 'Computer / Laptop', 'computer', true);
insert into public.device_template_ports (id, device_template_id, name, direction, port_type_id, sort_order) values ('c8bd2521-5227-419c-a437-d319cf4f90ba', 'dt-computer', 'HDMI Out', 'output', 'pt-hdmi', 0);
insert into public.device_template_ports (id, device_template_id, name, direction, port_type_id, sort_order) values ('73c8c3fb-9ee7-4f39-a241-449bf5ce36ea', 'dt-computer', 'USB-C', 'bidirectional', 'pt-usb-c', 1);
insert into public.device_template_ports (id, device_template_id, name, direction, port_type_id, sort_order) values ('e417fea4-acf6-44a2-848f-a479003a1ee1', 'dt-computer', 'Ethernet', 'bidirectional', 'pt-cat-rj45', 2);
insert into public.device_templates (id, name, category_id, is_public) values ('dt-adapter-midi-trs-a-to-din', '3.5mm-to-DIN MIDI Adapter (Type A)', 'adapter', true);
insert into public.device_template_ports (id, device_template_id, name, direction, port_type_id, sort_order) values ('5b295fb4-290f-4800-ba5f-4ad2b314717a', 'dt-adapter-midi-trs-a-to-din', '3.5mm In (from MIDI Out)', 'input', 'pt-midi-trs-a', 0);
insert into public.device_template_ports (id, device_template_id, name, direction, port_type_id, sort_order) values ('cdfb5cf4-848f-4389-bacd-9858f85ce6fd', 'dt-adapter-midi-trs-a-to-din', 'DIN Out (to MIDI In)', 'output', 'pt-midi-din', 1);
insert into public.device_templates (id, name, category_id, is_public) values ('dt-adapter-midi-trs-b-to-din', '3.5mm-to-DIN MIDI Adapter (Type B)', 'adapter', true);
insert into public.device_template_ports (id, device_template_id, name, direction, port_type_id, sort_order) values ('c1f2e564-8b14-483e-a719-633ffa1901e3', 'dt-adapter-midi-trs-b-to-din', '3.5mm In (from MIDI Out)', 'input', 'pt-midi-trs-b', 0);
insert into public.device_template_ports (id, device_template_id, name, direction, port_type_id, sort_order) values ('8b5d138d-d936-47a9-a625-dafc184c1e7f', 'dt-adapter-midi-trs-b-to-din', 'DIN Out (to MIDI In)', 'output', 'pt-midi-din', 1);