Інструменти
Сервер надає 63 інструменти: п’ять інструментів сеансу, три інструменти читання, 54 інструменти редагування, по одному на кожну операцію редагування, і erd_batch, який виконує кілька інструментів редагування як одну зміну.
Кожен інструмент, крім erd_list_documents, приймає першим аргументом path документа, і в таблицях нижче його пропущено.
Аргумент, позначений ?, необов’язковий.
Інструменти сеансу
| Інструмент | Аргументи | Що робить |
|---|---|---|
erd_list_documents | Перелічує ERD-документи з полями path, open, active, dirty і readonly: документи редактора, який обслуговує робочий каталог (в IDE від JetBrains це охоплює всі відкриті проєкти), а інакше — ERD-файли в межах робочого каталогу. | |
erd_open_document | create? | Відкриває документ для редагування в ERD Editor того редактора, який його обслуговує, якщо такий є. З аргументом create спершу створює файл, якщо його немає, а до назви без розширення додається .erd.json. |
erd_save | Зберігає документ, який тримає редактор. VS Code залишає зміни агента незбереженими, доки не викликано цей інструмент; Obsidian та IDE від JetBrains зберігають їх так само, як і ваші, а цей інструмент записує їх одразу. У режимі Headless кожна зміна вже записана, і цей інструмент нічого не робить. | |
erd_undo | Відміняє останню зміну, зроблену цим агентом, і ніколи — вашу. Виклики, що не створили кроку відміни, він пропускає й називає. | |
erd_redo | Повторно застосовує зміну, яку останньою відмінив erd_undo. |
Про те, що роблять збереження й відміна в кожному режимі, див. режими Live і Headless.
Читання документа
| Інструмент | Аргументи | Що робить |
|---|---|---|
erd_list | query?, offset?, limit?, namesOnly? | Налаштування й лічильники, потім сторінка таблиць з їхніми індексами та зв’язками; кожна таблиця подається з ідентифікатором, положенням і розміром на полотні, кількістю стовпців і групою таблиць, якщо вона входить до групи. Якщо це не пошук, після таблиць ідуть групи таблиць, а потім нотатки. |
erd_get | tableIds?, tableNames?, relationshipIds?, indexIds?, memoIds?, tableGroupIds? | Названі сутності повністю: таблиці з їхніми стовпцями та групою таблиць, зв’язки з їхніми стовпцями та значеннями onDelete і onUpdate, індекси з їхніми стовпцями, нотатки з їхнім текстом, групи таблиць з їхніми таблицями. |
erd_read | format, vendor?, statements?, header?, tableIds?, tableNames?, groupNames? | Увесь документ одразу в одному з чотирьох форматів або DDL лише деяких таблиць чи груп таблиць. |
Агент знаходить ідентифікатори за допомогою erd_list, читає стовпці та інші подробиці за допомогою erd_get і передає ці ідентифікатори інструментам редагування.
Розмір таблиці в erd_list — це прямокутник, який вона займає на полотні: висота точна, ширина приблизна.
Група таблиць подається прямокутником, який вона зберігає, разом із назвою, кольором і кількістю таблиць у ній.
Кожен зв’язок подається один раз, разом з однією з двох його таблиць.
Інструменти erd_list і erd_read повідомляють ті налаштування, які зберігає файл, — див. налаштування.
erd_read приймає один із чотирьох форматів:
format | Що повертає |
|---|---|
snapshot | Компактний JSON з усіма сутностями та їхніми ідентифікаторами, включно з групами таблиць, і налаштуваннями разом зі скриптами схеми SQL. Він пропускає те, що в різних користувачів різне: виміряні ширини, порядок накладання, область перегляду та вкладку. Для великої схеми він великий. |
sql | DDL для однієї з восьми баз даних: Databricks, MariaDB, MSSQL, MySQL, Oracle, PostgreSQL, Snowflake або SQLite. Типове значення vendor — база даних, задана для документа. DDL усього документа містить його скрипти перед таблицями й після них. З tableIds, tableNames або groupNames — лише ці таблиці із зовнішніми ключами, які вони містять, і без скриптів. Зовнішні ключі мають свої дії ON DELETE і ON UPDATE, крім тих, які цільова база даних пропускає, — див. ON DELETE і ON UPDATE. |
json | Увесь документ точно в тому вигляді, у якому збереження записує файл, включно з усіма змінами, які редактор ще не зберіг, — див. форма зберігання й значення часу виконання. |
scripts | Лише скрипти документа перед таблицями й після них у вигляді {"before":"…","after":"…"}, кожен порожній, якщо його не задано, хоч би якою великою була схема. |
Лише формат sql приймає vendor, statements, header, tableIds, tableNames і groupNames, а будь-який інший формат їх відхиляє.
statements:create, типове значення;ifNotExists, яке записуєCREATE TABLE IF NOT EXISTSдля MySQL, MariaDB, PostgreSQL, SQLite і Databricks та звичайнийCREATE TABLEдля решти; абоrecreate, яке видаляє таблиці перед їх створенням, а для Snowflake натомість записуєCREATE OR REPLACE TABLE.header:none, типове значення;use, яке вибирає базу даних або схему, задану назвою бази даних документа; абоcreateAndUse, яке спершу її створює. В Oracle є лишеuse, томуcreateAndUseзаписує тамuse, а в PostgreSQL є лишеcreateAndUse, томуuseтам заголовка не записує. Для SQLite заголовок не записується, як і для будь-якої бази даних, поки назва бази даних порожня або не є простим ідентифікатором.groupNames: таблиці груп таблиць, заданих назвами в будь-якому регістрі, разом із таблицями зtableIdsіtableNames. Назва, яка не збігається з жодною групою, відхиляється з кодомnotFound. Група без таблиць не додає жодної таблиці, а читання, у якому зовсім не залишилося таблиць, як-от коли всі названі групи порожні й жодної таблиці не названо, відхиляється з кодомinvalidArgs.
statements і header застосовуються й до DDL деяких таблиць. Вони працюють так само, як параметри Statements і Header на вкладці схеми SQL редактора, хоча на вкладці початково вибрано If not exists і CREATE + USE.
Назви беруться в лапки того типу, який зберігає файл, тобто заблокованого, поки Bracket Type заблоковано, — див. блокування.
Великі схеми
Схеми із сотнями чи тисячами таблиць теж працюють. Читання повертає щонайбільше 40 000 символів, що менше за поріг, після якого Claude Code відкладає результат інструмента у файл.
erd_listза замовчуванням повертає сторінку зі 100 об’єктів, спершу таблиці, потім групи таблиць, потім нотатки, і повідомляє за допомогоюnextOffsetіnote, де починається наступна сторінка. Передайте це значенняnextOffsetякoffsetз тим самимquery.queryзнаходить таблиці за словами в назві чи коментарі таблиці або стовпця, у будь-якому регістрі. Таблиці, назви яких містять більше цих слів, ідуть першими. Пошук не виводить ні груп таблиць, ні нотаток.namesOnlyвиводить лише назви таблиць, близько 2000 коротких назв в одній відповіді.erd_getіerd_readприймають не лише ідентифікатори, а йtableNames, аerd_read— ще йgroupNames, тож агент, якого попросили написати SQL-запит до великої схеми, читає DDL лише потрібних йому таблиць.erd_getнаводить ідентифікатори й назви, які нічого не позначають, у поліmissing, а ідентифікатори, для яких не вистачило місця в одній відповіді, — у поліnotReturned, щоб їх можна було запитати знову.- Читання, завелике для однієї відповіді, відхиляється з кодом
tooLargeі поясненням, як його звузити.
Інструменти редагування
Ідентифікатори беруться з erd_list і erd_get або з createdIds виклику, який створив сутність.
Новий ідентифікатор складається з 25 малих літер і цифр, як-от 03h17be2plxpj5n59tqag7ogj, а ідентифікатор, який уже є в документі, зберігає свою форму, тож не робіть жодних висновків із вигляду ідентифікатора.
x і y — це лівий і верхній краї на полотні в пікселях, а колір — це шістнадцятковий колір CSS, як-от #3b82f6, або порожній рядок, який прибирає колір.
Таблиці
| Інструмент | Аргументи | Що робить |
|---|---|---|
erd_add_table | Додає порожню таблицю у вільному місці й повертає її ідентифікатор у createdIds. | |
erd_remove_table | tableId | Видаляє таблицю разом з її стовпцями, індексами та всіма зв’язками, що її стосуються. |
erd_change_table_name | tableId, value | Перейменовує таблицю. |
erd_change_table_comment | tableId, value | Задає коментар таблиці. Порожній рядок очищає його. |
erd_change_table_color | tableId, color | Задає колір таблиці. |
erd_move_table | tableId, x, y | Переміщує таблицю в задане місце на полотні. |
erd_move_tables | positions | Переміщує кілька таблиць однією зміною, яку відміняє один виклик erd_undo. positions містить { tableId, x, y } для кожної таблиці, кожну таблицю щонайбільше один раз. |
erd_sort_tables | Розміщує всі таблиці рядами по полотну, спершу ті, що мають найменше стовпців, так само, як їх розміщують erd_import_sql, erd_import_graphql, erd_import_dbml і erd_import_aml. Таблиці однієї групи залишаються разом, а рамка кожної групи підганяється під них. |
Стовпці
| Інструмент | Аргументи | Що робить |
|---|---|---|
erd_add_column | tableId | Додає порожній стовпець до таблиці й повертає його ідентифікатор у createdIds. |
erd_remove_columns | tableId, columnIds | Видаляє стовпці з однієї таблиці разом зі зв’язками та записами індексів, які їх використовують. |
erd_change_column_name | tableId, columnId, value | Перейменовує стовпець. |
erd_change_column_data_type | tableId, columnId, value | Задає тип даних, як-от INT або VARCHAR(255). Поки синхронізація типів даних у зв’язках увімкнена, зміна поширюється зв’язками в обидва боки, як і в редакторі: тип serial доходить до зовнішніх ключів як цілочисельний тип, який він зберігає, так само, як його копіює erd_add_relationship, а ключ типу serial зберігає свій тип, коли змінюється один з його зовнішніх ключів, і на цьому зміна зупиняється. Вмикати чи вимикати синхронізацію вирішує користувач, а erd_list повідомляє її як relationshipDataTypeSync. |
erd_change_column_default | tableId, columnId, value | Задає типове значення у вигляді тексту SQL. Порожній рядок очищає його. |
erd_change_column_comment | tableId, columnId, value | Задає коментар. Порожній рядок очищає його. |
erd_set_column_primary_key | tableId, columnId, value | true робить стовпець частиною первинного ключа, false вилучає його звідти. |
erd_set_column_unique | tableId, columnId, value | Задає, чи є стовпець унікальним. |
erd_set_column_not_null | tableId, columnId, value | Задає, чи є стовпець NOT NULL. |
erd_set_column_auto_increment | tableId, columnId, value | Задає, чи має стовпець автоінкремент. |
erd_move_column | tableId, columnId, targetColumnId | Переміщує стовпець у межах його таблиці на місце іншого стовпця. |
Зв’язки
relationshipType — це кардинальність на кінці біля дочірньої таблиці: ZeroOne, ZeroN, OneOnly або OneN.
Початкова таблиця — батьківська, тобто сторона, на яку посилаються і яка містить первинний ключ, а кінцева таблиця — дочірня.
onDelete і onUpdate — це дії ON DELETE і ON UPDATE зовнішнього ключа: none, noAction, cascade, setNull, setDefault або restrict.
none не записує жодної конструкції, тож діє типова поведінка бази даних — див. ON DELETE і ON UPDATE.
Дія, не вказана в erd_add_relationship або erd_link_columns, має значення none.
| Інструмент | Аргументи | Що робить |
|---|---|---|
erd_add_relationship | startTableId, endTableId, relationshipType, onDelete?, onUpdate? | Зв’язує дві таблиці. Копіює первинний ключ батьківської таблиці в дочірню як стовпці зовнішнього ключа, спершу створюючи стовпець первинного ключа, якщо в батьківській таблиці його немає. Кожен стовпець зовнішнього ключа отримує назву так само, як під час малювання зв’язку в редакторі: ключ id таблиці users дає users_id, а ключ, як-от member_id, зберігає свою назву — див. назви стовпців зовнішнього ключа. Кожен копіює тип даних свого ключа, але ключ типу serial дає цілочисельний тип, який він зберігає, як-от integer для serial4, а простий serial залишається serial в усіх базах даних, крім PostgreSQL, MySQL і MariaDB, — див. ідентифікувальні зв’язки. createdIds містить новий стовпець ключа, якщо його було створено, стовпці зовнішнього ключа, а останнім — ідентифікатор зв’язку. |
erd_link_columns | startTableId, startColumnIds, endTableId, endColumnIds, relationshipType, onDelete?, onUpdate? | Проводить зв’язок між наявними стовпцями, утворюючи пари з початкових і кінцевих стовпців за їхнім положенням. Він не перейменовує жодного стовпця й не змінює жодного типу даних. |
erd_remove_relationship | relationshipId | Видаляє лінію зв’язку. Стовпці зовнішнього ключа зв’язку залишаються в таблиці. |
erd_change_relationship_type | relationshipId, relationshipType | Змінює кардинальність зв’язку. |
erd_change_relationship_on_delete | relationshipId, onDelete | Задає дію ON DELETE зв’язку: що відбувається з дочірніми рядками, коли видаляють батьківський рядок. |
erd_change_relationship_on_update | relationshipId, onUpdate | Задає дію ON UPDATE зв’язку: що відбувається з дочірніми рядками, коли змінюють батьківський ключ. |
erd_add_relationship дає назви стовпцям зовнішнього ключа під час виконання, тож спершу задайте назви батьківській таблиці та її первинному ключу.
Жоден інструмент не змінює стовпці наявного зв’язку так, як це робить зіставлення стовпців у редакторі.
Щоб зіставити зв’язок з іншими стовпцями, виконайте erd_remove_relationship, який залишає його стовпці зовнішнього ключа в таблиці, і erd_link_columns з потрібними стовпцями в одному erd_batch, який відміняє один виклик erd_undo.
Індекси
Ідентифікатор стовпця індексу — це запис у списку стовпців індексу, який повертає erd_get, а не ідентифікатор стовпця таблиці.
| Інструмент | Аргументи | Що робить |
|---|---|---|
erd_add_index | tableId | Додає порожній індекс до таблиці й повертає його ідентифікатор у createdIds. |
erd_remove_index | indexId | Видаляє індекс. |
erd_change_index_name | indexId, value | Перейменовує індекс. |
erd_set_index_unique | indexId, value | Задає, чи є індекс унікальним. |
erd_add_index_column | indexId, columnId | Додає стовпець таблиці індексу й повертає ідентифікатор нового стовпця індексу. Стовпець, який уже є в індексі, залишається без змін. |
erd_remove_index_column | indexId, indexColumnId | Видаляє один стовпець з індексу. |
erd_move_index_column | indexId, indexColumnId, targetIndexColumnId | Переміщує стовпець у межах індексу на місце іншого його стовпця. |
erd_set_index_column_order | indexId, indexColumnId, orderType | Задає порядок сортування одного стовпця в індексі, ASC або DESC. |
Нотатки
| Інструмент | Аргументи | Що робить |
|---|---|---|
erd_add_memo | Додає порожню нотатку у вільному місці й повертає її ідентифікатор у createdIds. | |
erd_remove_memo | memoId | Видаляє нотатку. |
erd_change_memo_value | memoId, value | Замінює текст нотатки. |
erd_change_memo_color | memoId, color | Задає колір нотатки. |
erd_move_memo | memoId, x, y | Переміщує нотатку в задане місце на полотні. |
erd_resize_memo | memoId, width, height | Змінює розмір нотатки. Ширина має бути щонайменше близько 116 пікселів, а висота — щонайменше 100. Не створює кроку відміни, бо редактор фіксує зміну розміру нотатки, лише якщо її зроблено перетягуванням. |
Поки нотатки приховано через View Option → Memos, erd_add_memo однаково додає нотатку, і вона залишається прихованою, доки нотатки знову не буде показано.
erd_list і erd_get також виводять приховані нотатки.
Групи таблиць
Група таблиць — це іменована рамка, намальована позаду її таблиць, а її колір видно на рамці й на заголовках її таблиць — див. групи таблиць.
Таблиця входить щонайбільше до однієї групи. erd_move_table, erd_move_tables і erd_move_table_group ніколи не змінюють набору таблиць у групі, хоч би куди вони ставили таблицю, тоді як у редакторі таблиця потрапляє до групи або виходить із неї там, де її відпускають, — див. додавання й вилучення таблиць. erd_add_table_group і erd_set_table_group додають таблиці до групи, а erd_remove_table_group залишає її таблиці поза будь-якою групою.
Група зберігає прямокутник щонайменше 160 пікселів завширшки й 100 заввишки, включно зі смугою заголовка, а редактор малює рамку, збільшену так, щоб умістити кожну з її таблиць.
| Інструмент | Аргументи | Що робить |
|---|---|---|
erd_add_table_group | name, color?, x?, y?, width?, height?, tableIds? | Додає групу й повертає її ідентифікатор у createdIds. Передайте або tableIds, або прямокутник: x, y, width і height разом. З tableIds кожна таблиця виходить із групи, у якій була, а прямокутник підганяється під них так само, як під час групування виділених таблиць. Прямокутник охоплює кожну таблицю, що не входить до жодної групи й центр якої лежить у ньому, як і під час малювання групи. Порожнє значення name залишає групу без назви. Один виклик erd_undo видаляє групу й повертає кожну таблицю до групи, у якій вона була. |
erd_remove_table_group | groupId | Видаляє групу. Її таблиці залишаються на своїх місцях поза будь-якою групою. |
erd_change_table_group_name | groupId, value | Перейменовує групу. Порожній рядок залишає її без назви. |
erd_change_table_group_color | groupId, color | Задає колір групи. |
erd_move_table_group | groupId, x, y | Переміщує групу так, щоб її прямокутник починався в цій точці, і зсуває її таблиці на ту саму відстань, як це робить перетягування смуги заголовка. Переміщення менш ніж на 20 пікселів, якщо скласти зсуви по горизонталі й вертикалі, не створює кроку відміни. |
erd_resize_table_group | groupId, x?, y?, width, height | Задає прямокутник групи, а її таблиці залишаються на своїх місцях. Якщо x і y не вказано, кут групи зберігається. Прямокутник, який не вмістив би таблиці групи з їхніми відступами, відхиляється з повідомленням, що називає рамку, яку він має вмістити. |
erd_set_table_group | tableIds, groupId | Додає таблиці до групи, і кожна з них виходить із групи, у якій була. groupId зі значенням null або порожнім рядком вилучає їх з усіх груп. |
Поки групи приховано через View Option → Table Groups, ці інструменти однаково додають і змінюють групи, які залишаються прихованими, доки групи не буде показано, — див. приховування груп.
erd_sort_tables тримає таблиці кожної групи разом, erd_import_dbml і erd_import_json імпортують групи — див. імпорт, — а erd_read записує DDL вибраних груп за допомогою groupNames.
Випуск ERD Editor, що вийшов раніше, ніж з’явилися групи таблиць, під час збереження файлу відкидає його групи, як це роблять розширення для VS Code до версії 4.0.0 і плагіни для Obsidian та JetBrains до версії 1.0.0, — див. оновлення.
Налаштування
Агент задає налаштування самої схеми: базу даних, її назву та скрипти схеми SQL.
Усі інші налаштування, які зберігає документ, задає користувач у редакторі: перемикачі параметрів відображення, параметри вкладки налаштувань, мову та стилі назв генератора коду, тип лапок і блокування.
Жоден інструмент їх не змінює, крім імпорту в режимі replace: erd_import_json переносить налаштування й блокування документа, який він завантажує, а інші чотири повертають область перегляду на початок полотна — див. імпорт.
Версія сервера 1.0.0 вилучила інструменти, які їх задавали: erd_set_language, erd_set_table_name_case, erd_set_column_name_case, erd_set_bracket_type, erd_set_relationship_data_type_sync, erd_set_relationship_optimization, erd_set_column_order, erd_set_max_width_comment, erd_set_ignore_save_settings і erd_set_show.
erd_list і формат snapshot інструмента erd_read повідомляють налаштування так, як їх зберігає файл, а lockSettings містить по одному прапорцю на кожне блокування: viewport, canvasType, language, tableNameCase, columnNameCase і bracketType.
Для заблокованої мови, стилю назв чи типу лапок повідомляється заблоковане значення, тобто те, яке зберігає файл і з яким відкривається кожен редактор, хоч би що показував екран редактора. Область перегляду та вкладка не повідомляються.
erd_set_ddl_script створює крок відміни. erd_set_database і erd_set_database_name його не створюють, тож erd_undo не може їх відмінити.
| Інструмент | Аргументи | Що робить |
|---|---|---|
erd_set_database | value | Задає базу даних: MariaDB, MSSQL, MySQL, Oracle, PostgreSQL, SQLite, Databricks або Snowflake. Цим визначаються типи даних бази даних і DDL, який записує erd_read, коли vendor не вказано. |
erd_set_database_name | value | Задає назву бази даних, яку вказують заголовки use і createAndUse інструмента erd_read. |
erd_set_ddl_script | position, sql | Задає один із двох скриптів, що записуються навколо таблиць, — див. скрипти перед таблицями й після них. position має значення before, що записується перед таблицями, як-от CREATE EXTENSION або CREATE SCHEMA, або after, що записується після них, як-от GRANT або CREATE VIEW. sql замінює весь скрипт і має щонайбільше 10 000 символів, а порожній рядок видаляє скрипт. Спершу прочитайте поточний скрипт за допомогою формату scripts інструмента erd_read. |
Скрипт потрапляє в DDL кожної бази даних без змін, тож пишіть його для бази даних документа. Для MSSQL після скрипта, останній рядок якого не GO, додається рядок GO.
Випуск ERD Editor, що вийшов раніше, ніж з’явилися ці скрипти, під час збереження файлу відкидає його скрипти, як це роблять розширення для VS Code до версії 4.0.0 і плагіни для Obsidian та JetBrains до версії 1.0.0, — див. оновлення.
Імпорт
Ці інструменти читають схему так само, як меню імпорту редактора, — див. імпорт і експорт файлів.
Кожен приймає текст як value, а також mode: replace, типове значення, або append.
| Інструмент | Аргументи | Що робить |
|---|---|---|
erd_import_sql | value, mode? | Завантажує SQL DDL, оператори CREATE TABLE і подібні. |
erd_import_graphql | value, mode? | Завантажує GraphQL SDL. |
erd_import_dbml | value, mode? | Завантажує DBML. Кожен TableGroup стає групою таблиць із тих таблиць, які в ньому названо, — див. DBML. |
erd_import_aml | value, mode? | Завантажує AML. |
erd_import_json | value, mode? | Завантажує JSON-документ erd-editor, як-от інший файл .erd.json. |
replace замінює документ, а erd_undo відновлює попередній:
erd_import_sql,erd_import_graphql,erd_import_dbmlіerd_import_amlзамінюють усі таблиці, зв’язки, індекси, нотатки й групи таблиць. Вони зберігають налаштування документа, включно з блокуваннями, крім області перегляду, яка повертається на початок полотна з масштабом 100%.erd_import_jsonзамінює весь документ разом із його налаштуваннями: налаштування й блокування з JSON займають місце налаштувань цього документа, а JSON без записаних блокувань вмикає всі блокування й ставить область перегляду на початок полотна. Щоб зберегти налаштування цього документа, починайте з тексту, який повертає форматjsonінструментаerd_read. Порожній текст дає новий документ, такий самий, як той, що створюєerd_open_documentз аргументомcreate.
append додає імпортоване до документа, як це робить імпорт із додаванням у редакторі, а один виклик erd_undo прибирає все додане:
- Вміст тексту з’являється як нові сутності з новими ідентифікаторами в блоці, який розміщується під усім вмістом документа, включно з прихованими нотатками й групами таблиць, і вирівнюється за лівим краєм цього вмісту. Кожна наявна таблиця й кожне налаштування залишаються, зокрема таблиця з тією самою назвою: за назвою нічого не об’єднується.
- Зв’язки та індекси додаються лише для таблиць, які приносить імпорт, тож зовнішній ключ до таблиці, яку текст не оголошує, відкидається.
erd_import_sql,erd_import_graphqlіerd_import_amlдодають таблиці з їхніми зв’язками та індексами, аerd_import_dbml— ще й свої групи таблиць.erd_import_jsonдодає таблиці, зв’язки, індекси, нотатки й групи таблиць, але ніколи не свої налаштування, і відхиляє порожній текст.
JSON-документ зберігає власне розміщення, включно з групами таблиць: у режимі replace — там, де він розміщує свої таблиці, а в режимі append — усередині доданого блоку.
Таблиці з SQL, GraphQL, DBML і AML розставляються рядами, спершу ті, що мають найменше стовпців, причому таблиці кожної групи йдуть разом, так, як їх розміщує erd_sort_tables, і ніколи не в режимі Flow, у якому їх розміщує власний імпорт редактора, коли це можливо. Ці чотири інструменти відхиляють порожній текст в обох режимах.
erd_batch
erd_batch виконує кілька інструментів редагування по черзі як одну зміну, усі або жодного.
operationsмістить до 100 записів, кожен вигляду{ tool, as?, args? }, деargs— це аргументи інструмента безpath.- Спершу операції пробно виконуються на копії документа. Відхилену операцію буде названо, як-от
operations[1] erd_remove_table: …, і нічого не буде застосовано. - Один виклик
erd_undoвідміняє весь пакет, крім операцій, які він не може відмінити і які названо в поліundoNoteрезультату: операцій інструментів, що не створюють кроку відміни, як-отerd_set_database, і операцій, які змінили документ, не створивши його, як-от короткий викликerd_move_table_group. Пакет, який зовсім не створив кроку відміни,erd_undoпропускає.historyEntriesу результаті рахує записи в історії змін редактора всередині пакета, а не викликиerd_undo. - У режимі Live редактор приймає весь пакет або жодної його частини.
Агент не може до виклику знати ідентифікаторів, які створить пакет, тож операція, названа за допомогою as, дає змогу пізнішій операції посилатися на них: $name або $name.0 — на її перший створений ідентифікатор, $name.1 — на другий, а $name.last — на останній.
Назва складається з літер ASCII, цифр і символів підкреслення, не починається з цифри й позначає лише одну операцію.
Посилання розв’язується лише там, де аргумент приймає ідентифікатор сутності, тож назва чи коментар із текстом $x залишаються текстом.
Таблиця з її стовпцями та зв’язок за один виклик:
{
"path": "shop.erd.json",
"operations": [
{ "tool": "erd_add_table", "as": "users" },
{ "tool": "erd_change_table_name", "args": { "tableId": "$users", "value": "users" } },
{ "tool": "erd_add_column", "as": "uid", "args": { "tableId": "$users" } },
{ "tool": "erd_change_column_name", "args": { "tableId": "$users", "columnId": "$uid", "value": "id" } },
{ "tool": "erd_change_column_data_type", "args": { "tableId": "$users", "columnId": "$uid", "value": "BIGINT" } },
{ "tool": "erd_set_column_primary_key", "args": { "tableId": "$users", "columnId": "$uid", "value": true } },
{ "tool": "erd_add_table", "as": "orders" },
{ "tool": "erd_change_table_name", "args": { "tableId": "$orders", "value": "orders" } },
{ "tool": "erd_add_relationship", "args": { "startTableId": "$users", "endTableId": "$orders", "relationshipType": "ZeroN", "onDelete": "cascade" } }
]
}
Таблиця users та її ключ id отримують назви ще до створення зв’язку, тож стовпець зовнішнього ключа, який зв’язок додає до orders, має назву users_id.
Результати
Редагування повертає один рядок JSON:
{"tool":"erd_add_table","mode":"live","createdIds":["03h17be2plxpj5n59tqag7ogj"],"batches":1,"historyEntries":1}
| Поле | Значення |
|---|---|
mode | live або headless — див. режими Live і Headless. |
createdIds | Ідентифікатори того, що створив виклик, по порядку. |
batches, historyEntries | Скільки пакетів змін надіслав виклик і скільки записів в історії змін редактора він створив. |
undoable, undoNote | undoable дорівнює false, коли erd_undo пропустить цей виклик, а undoNote пояснює чому: інструмент не створює кроку відміни, виклик змінив документ, не створивши його, як це робить erd_move_table_group менш ніж на 20 пікселів, або документ уже мав це значення. Результат erd_batch завжди містить undoNote. Якщо пакет створив крок відміни, примітка повідомляє, що один виклик erd_undo відміняє пакет, і називає кожну операцію, яку він не відміняє; якщо не створив, результат містить undoable: false, а примітка повідомляє, що erd_undo його пропускає. |
mismatch | Є, коли виклик створив іншу кількість пакетів або записів в історії змін, ніж оголошує інструмент. |
notes | Є, коли щось змінилося в сеансі, як-от коли редактор завершив роботу або перестав обслуговувати документ чи коли файл змінився на диску. |
Відмова — це результат з помилкою, що містить код і повідомлення, яке пояснює, що робити:
{"error":{"code":"notFound","message":"tableId nope names no live table; read the document for current ids"}}
code | Причина |
|---|---|
notFound | Ідентифікатор не вказує ні на що наявне, або файлу не існує. |
invalidArgs | Аргумент відсутній або має неправильне значення. |
invalidPath | Шлях не вказує на ERD-документ. У Windows — також шлях з назвою, яку Windows не зберігає так, як її написано, або шлях до документа, який редактор тримає за іншим шляхом, названим у повідомленні. |
invalidDocument | Файл не є документом, який редактор може прочитати. |
tooLarge | Результат читання не вміщується в одну відповідь. |
blocked | Документ тримає редактор з вимкненим хабом. Повідомлення пояснює, як його ввімкнути: у VS Code позначте робочу область як довірену й увімкніть dineug.erd-editor.agentHub.enabled або перезавантажте вікно; в Obsidian увімкніть параметр Coding agents або перезавантажте Obsidian; в IDE від JetBrains увімкніть параметр Coding agents або, якщо його вже ввімкнено, перезапустіть IDE. |
hubDisabled | IDE від JetBrains тримає документ лише в проєкті, якому вона не довіряє. Читання й далі працює; щоб агент міг редагувати, позначте проєкт як довірений. |
conflict | Файл змінився на диску під час виклику. Нічого не записано. |
hubAppeared, hubGone | Редактор почав обслуговувати документ, який агент редагував на диску, або редактор, що його обслуговував, досі працює, але його файл блокування та з’єднання зникли. Нічого не записано. |
notSaved | erd_save не зміг зберегти документ редактора. |
readonly | Редактор тримає документ у режимі лише для читання, як-от файл, який він не може записати або не може прочитати як діаграму. Якщо редактора немає, сам файл доступний лише для читання, як-от файл Perforce або TFVC, який не взято на редагування. Нічого не записано. |
protocolMismatch | Розширення чи плагін ERD Editor у редакторі та сервер використовують різні версії протоколу, як-от сервер версії 1.0.0 з розширенням для VS Code версії 3.x. Читання теж відхиляється, а повідомлення називає сторону, яку треба оновити, — див. оновлення. |
hubUnreachable, timeout, disconnected | Хаб редактора не прийняв з’єднання, не відповів протягом 30 секунд або розірвав з’єднання під час виклику. У Windows hubUnreachable також означає, що система Windows не допустила агента до хаба: редактор працює з більшими правами, ніж агент, як-от коли його запущено від імені адміністратора, а агента — ні, або агент працює в пісочниці. |
Інші коди трапляються рідше, і кожна відмова містить повідомлення, яке пояснює, що сталося.
Інструменти редагування, erd_batch і три інструменти читання відхиляють аргумент, якого вони не оголошують, або аргумент неправильного типу, повертаючи помилку JSON-RPC invalid params (-32602) ще до того, як торкнутися документа, тож аргумент з помилкою в назві ніколи не відкидається мовчки.
П’ять інструментів сеансу ігнорують невідомі їм аргументи.