Ga naar hoofdinhoud

Tools

De server biedt 63 tools: vijf sessietools, drie leestools, 54 bewerkingstools, één per soort bewerking, en erd_batch, die meerdere bewerkingstools als één bewerking uitvoert.

Elke tool behalve erd_list_documents krijgt het path van het document als eerste argument, en de tabellen hieronder laten het weg. Een argument met ? is optioneel.

Sessietools​

ToolArgumentenWat het doet
erd_list_documentsToont ERD-documenten met path, open, active, dirty en readonly: die van de editor die de werkmap bedient, wat in een JetBrains-IDE elk geopend project omvat, en anders de ERD-bestanden onder de werkmap.
erd_open_documentcreate?Opent een document om te bewerken, in de ERD Editor van de editor die het bedient, als die er is. Met create wordt het bestand eerst aangemaakt als het ontbreekt, en een naam zonder extensie krijgt .erd.json.
erd_saveSlaat een document op dat een editor beheert. In VS Code blijven de bewerkingen van de agent niet opgeslagen tot deze tool wordt aangeroepen; Obsidian en een JetBrains-IDE slaan ze op zoals ze die van jou opslaan, en deze tool schrijft ze direct weg. In headless-modus is elke bewerking al weggeschreven en doet deze tool niets.
erd_undoMaakt de laatste bewerking van deze agent ongedaan, nooit die van jou. Aanroepen die geen stap in de geschiedenis hebben opgeleverd, worden overgeslagen en genoemd.
erd_redoVoert de bewerking die erd_undo het laatst ongedaan heeft gemaakt opnieuw uit.

Zie Live en headless voor wat opslaan en ongedaan maken in elke modus doen.

Een document lezen​

ToolArgumentenWat het doet
erd_listquery?, offset?, limit?, namesOnly?De instellingen en aantallen, daarna een pagina tabellen met hun indexen en relaties, elke tabel met haar id, positie en grootte op het canvas, aantal kolommen en tabelgroep als ze in een groep zit. Tenzij er wordt gezocht, volgen na de tabellen de tabelgroepen en daarna de memo's.
erd_gettableIds?, tableNames?, relationshipIds?, indexIds?, memoIds?, tableGroupIds?De genoemde entiteiten, volledig: tabellen met hun kolommen en hun tabelgroep, relaties met hun kolommen en hun onDelete en onUpdate, indexen met hun kolommen, memo's met hun tekst, tabelgroepen met hun tabellen.
erd_readformat, vendor?, statements?, header?, tableIds?, tableNames?, groupNames?Het hele document in één keer in een van vier formaten, of de DDL van alleen enkele tabellen of tabelgroepen.

Een agent vindt id's met erd_list, leest kolommen en andere details met erd_get en geeft die id's door aan de bewerkingstools. De grootte van een tabel in erd_list is het kader dat ze op het canvas inneemt: de hoogte exact, de breedte bij benadering. Een tabelgroep wordt vermeld met de rechthoek die hij opslaat, met zijn naam, zijn kleur en het aantal tabellen dat hij bevat. Elke relatie wordt één keer vermeld, bij een van haar twee tabellen. De instellingen die erd_list en erd_read rapporteren, zijn die welke het bestand opslaat — zie Instellingen.

erd_read accepteert een van vier formaten:

formatWat het teruggeeft
snapshotCompacte JSON met elke entiteit en haar id, tabelgroepen inbegrepen, en de instellingen met de Schema SQL-scripts. Laat weg wat per kijker verschilt: gemeten breedtes, de stapelvolgorde, de weergave en het tabblad. Groot bij een groot schema.
sqlDDL voor een van de acht databases: Databricks, MariaDB, MSSQL, MySQL, Oracle, PostgreSQL, Snowflake of SQLite. vendor is standaard de database waarop het document is ingesteld. De DDL van het hele document bevat de scripts vóór en na de tabellen. Met tableIds, tableNames of groupNames alleen die tabellen, met de refererende sleutels die ze bevatten, en geen scripts. Refererende sleutels krijgen hun ON DELETE- en ON UPDATE-acties mee, behalve die welke de doeldatabase weglaat — zie ON DELETE en ON UPDATE.
jsonHet hele document precies zoals opslaan het bestand schrijft, inclusief bewerkingen die de editor nog niet heeft opgeslagen — zie Opslagvorm en runtimewaarde.
scriptsAlleen de scripts vóór en na de tabellen van het document, als {"before":"…","after":"…"}, elk leeg als het niet is ingesteld, hoe groot het schema ook is.

Alleen het formaat sql accepteert vendor, statements, header, tableIds, tableNames en groupNames, en een ander formaat weigert ze.

  • statements: create, de standaardwaarde; ifNotExists, dat op MySQL, MariaDB, PostgreSQL, SQLite en Databricks CREATE TABLE IF NOT EXISTS schrijft en op de andere alleen CREATE TABLE; of recreate, dat de tabellen verwijdert voordat het ze aanmaakt, waarbij Snowflake in plaats daarvan CREATE OR REPLACE TABLE schrijft.
  • header: none, de standaardwaarde; use, dat de database of het schema selecteert dat de databasenaam van het document aangeeft; of createAndUse, dat die eerst aanmaakt. Oracle kent alleen use, dus createAndUse schrijft daar use, en PostgreSQL kent alleen createAndUse, dus use schrijft daar geen kop. SQLite schrijft er geen, en geen enkele database schrijft er een zolang de databasenaam leeg is of geen gewone identifier is.
  • groupNames: de tabellen van de genoemde tabelgroepen, op naam ongeacht hoofdlettergebruik, samengevoegd met tableIds en tableNames. Een naam die met geen enkele groep overeenkomt, wordt geweigerd met notFound. Een groep zonder tabellen voegt er geen toe, en een leesopdracht die helemaal geen tabel overhoudt, zoals wanneer elke genoemde groep leeg is en er geen tabel is genoemd, wordt geweigerd met invalidArgs.

statements en header gelden ook voor de DDL van enkele tabellen. Ze werken zoals de opties Statements en Header van het tabblad Schema SQL in de editor, al begint het tabblad bij If not exists en CREATE + USE. Namen worden tussen aanhalingstekens gezet met het type aanhalingstekens dat het bestand opslaat, het vergrendelde type zolang Bracket Type vergrendeld is — zie Vergrendeling.

Grote schema's​

Schema's met honderden of duizenden tabellen werken ook. Een leesopdracht geeft hooguit 40.000 tekens terug, onder de grens waarboven Claude Code een toolresultaat apart in een bestand zet.

  • erd_list geeft standaard een pagina van 100 terug, eerst de tabellen, dan de tabelgroepen, dan de memo's, en geeft met nextOffset en een note aan waar de volgende pagina begint. Geef die nextOffset door als offset, met dezelfde query.
  • query vindt tabellen op woorden in een tabel- of kolomnaam of opmerking, ongeacht hoofdlettergebruik. Tabellen waarvan de namen meer van de woorden bevatten, komen eerst. Een zoekopdracht toont geen tabelgroepen of memo's.
  • namesOnly toont alleen de tabelnamen, ongeveer 2.000 korte namen in één antwoord.
  • erd_get en erd_read accepteren naast id's ook tableNames, en erd_read accepteert groupNames, zodat een agent die om een SQL-query op een groot schema wordt gevraagd, alleen de DDL leest van de tabellen die hij nodig heeft.
  • erd_get vermeldt id's en namen die naar niets verwijzen onder missing, en de id's waarvoor in één antwoord geen ruimte is onder notReturned, om opnieuw op te vragen.
  • Een leesopdracht die te groot is voor één antwoord, wordt geweigerd met tooLarge, met uitleg over hoe je hem inperkt.

Bewerkingstools​

Id's komen uit erd_list en erd_get, of uit de createdIds van de aanroep die de entiteit heeft aangemaakt. Een nieuwe id bestaat uit 25 kleine letters en cijfers, zoals 03h17be2plxpj5n59tqag7ogj, terwijl een id die het document al bevat zijn vorm behoudt, dus leid niets af uit de vorm van een id. x en y zijn de linker- en bovenrand op het canvas, in pixels, en een kleur is een CSS-hexkleur zoals #3b82f6, of een lege string, die de kleur verwijdert.

Tabellen​

ToolArgumentenWat het doet
erd_add_tableVoegt een lege tabel toe op een vrije plek en geeft de id ervan terug in createdIds.
erd_remove_tabletableIdVerwijdert een tabel met haar kolommen, indexen en elke relatie die ermee verbonden is.
erd_change_table_nametableId, valueWijzigt de naam van een tabel.
erd_change_table_commenttableId, valueStelt de opmerking van een tabel in. Een lege string wist die.
erd_change_table_colortableId, colorStelt de kleur van een tabel in.
erd_move_tabletableId, x, yVerplaatst een tabel naar een positie op het canvas.
erd_move_tablespositionsVerplaatst meerdere tabellen in één bewerking, die één erd_undo ongedaan maakt. positions bevat { tableId, x, y } per tabel, elke tabel hooguit één keer.
erd_sort_tablesPlaatst alle tabellen in rijen over het canvas, die met de minste kolommen eerst, zoals erd_import_sql, erd_import_graphql, erd_import_dbml en erd_import_aml ze plaatsen. De tabellen van een tabelgroep blijven bij elkaar, en het kader van elke groep wordt eromheen passend gemaakt.

Kolommen​

ToolArgumentenWat het doet
erd_add_columntableIdVoegt een lege kolom toe aan een tabel en geeft de id ervan terug in createdIds.
erd_remove_columnstableId, columnIdsVerwijdert kolommen uit één tabel, met de relaties en indexvermeldingen die ze gebruiken.
erd_change_column_nametableId, columnId, valueWijzigt de naam van een kolom.
erd_change_column_data_typetableId, columnId, valueStelt het gegevenstype in, zoals INT of VARCHAR(255). Zolang Gegevenstypen via relaties synchroniseren aanstaat, volgt de wijziging relaties in beide richtingen, zoals in de editor: een serial-type komt bij de refererende sleutels aan als het type voor gehele getallen dat het opslaat, zoals erd_add_relationship het kopieert, en een serial-sleutel behoudt zijn type wanneer een van zijn refererende sleutels wijzigt, waardoor de wijziging daar stopt. Het in- of uitschakelen van de synchronisatie is aan de gebruiker, en erd_list rapporteert die als relationshipDataTypeSync.
erd_change_column_defaulttableId, columnId, valueStelt de standaardwaarde in, als SQL-tekst. Een lege string wist die.
erd_change_column_commenttableId, columnId, valueStelt de opmerking in. Een lege string wist die.
erd_set_column_primary_keytableId, columnId, valuetrue maakt de kolom onderdeel van de primaire sleutel, false haalt haar eruit.
erd_set_column_uniquetableId, columnId, valueStelt in of de kolom uniek is.
erd_set_column_not_nulltableId, columnId, valueStelt in of de kolom NOT NULL is.
erd_set_column_auto_incrementtableId, columnId, valueStelt in of de kolom automatisch ophoogt.
erd_move_columntableId, columnId, targetColumnIdVerplaatst een kolom binnen haar tabel naar de positie van een andere kolom.

Relaties​

relationshipType is de kardinaliteit aan de kant van de kindtabel: ZeroOne, ZeroN, OneOnly of OneN. De begintabel is de oudertabel, de kant waarnaar wordt verwezen en die de primaire sleutel bevat, en de eindtabel is de kindtabel. onDelete en onUpdate zijn de ON DELETE- en ON UPDATE-acties van de refererende sleutel: none, noAction, cascade, setNull, setDefault of restrict. none schrijft geen clausule, dus geldt het standaardgedrag van de database — zie ON DELETE en ON UPDATE. Een actie die bij erd_add_relationship of erd_link_columns wordt weggelaten, is none.

ToolArgumentenWat het doet
erd_add_relationshipstartTableId, endTableId, relationshipType, onDelete?, onUpdate?Verbindt twee tabellen met een relatie. Kopieert de primaire sleutel van de oudertabel naar de kindtabel als kolommen met refererende sleutel, en maakt eerst een kolom voor de primaire sleutel aan als de oudertabel er geen heeft. Elke kolom met refererende sleutel krijgt dezelfde naam als bij het tekenen van een relatie in de editor: de sleutel id van users geeft users_id, en een sleutel zoals member_id behoudt zijn naam — zie Namen van kolommen met refererende sleutel. Elke kolom kopieert het gegevenstype van haar sleutel, behalve dat een serial-sleutel het type voor gehele getallen geeft dat hij opslaat, zoals integer voor serial4, en een kale serial buiten PostgreSQL, MySQL en MariaDB serial blijft — zie Identificerende relaties. createdIds bevat die nieuwe sleutelkolom als er een is aangemaakt, de kolommen met refererende sleutel en als laatste de id van de relatie.
erd_link_columnsstartTableId, startColumnIds, endTableId, endColumnIds, relationshipType, onDelete?, onUpdate?Tekent een relatie tussen kolommen die al bestaan en koppelt begin- en eindkolommen op positie. Wijzigt geen kolomnaam en geen gegevenstype.
erd_remove_relationshiprelationshipIdVerwijdert een verbindingslijn. De kolommen met refererende sleutel blijven in de tabel.
erd_change_relationship_typerelationshipId, relationshipTypeWijzigt de kardinaliteit van een relatie.
erd_change_relationship_on_deleterelationshipId, onDeleteStelt de ON DELETE-actie van een relatie in: wat het verwijderen van een rij in de oudertabel met de bijbehorende rijen in de kindtabel doet.
erd_change_relationship_on_updaterelationshipId, onUpdateStelt de ON UPDATE-actie van een relatie in: wat het wijzigen van een sleutel in de oudertabel met de bijbehorende rijen in de kindtabel doet.

erd_add_relationship geeft de kolommen met refererende sleutel hun naam op het moment dat de tool wordt uitgevoerd, dus geef eerst de oudertabel en haar primaire sleutel een naam.

Geen enkele tool wijzigt de kolommen van een bestaande relatie zoals Kolommen toewijzen in de editor dat doet. Om een relatie aan andere kolommen toe te wijzen, voer je erd_remove_relationship uit, die de kolommen met refererende sleutel in de tabel laat staan, en erd_link_columns met de gewenste kolommen, samen in één erd_batch, die één erd_undo ongedaan maakt.

Indexen​

De id van een indexkolom is die van een item in de kolomlijst van de index, zoals erd_get die teruggeeft, niet de id van de tabelkolom.

ToolArgumentenWat het doet
erd_add_indextableIdVoegt een lege index toe aan een tabel en geeft de id ervan terug in createdIds.
erd_remove_indexindexIdVerwijdert een index.
erd_change_index_nameindexId, valueWijzigt de naam van een index.
erd_set_index_uniqueindexId, valueStelt in of de index uniek is.
erd_add_index_columnindexId, columnIdVoegt een kolom van de tabel van de index toe en geeft de id van de nieuwe indexkolom terug. Een kolom die al in de index staat, blijft ongemoeid.
erd_remove_index_columnindexId, indexColumnIdVerwijdert één kolom uit een index.
erd_move_index_columnindexId, indexColumnId, targetIndexColumnIdVerplaatst een kolom binnen een index naar de positie van een andere kolom van die index.
erd_set_index_column_orderindexId, indexColumnId, orderTypeStelt de sorteervolgorde van één kolom in een index in, ASC of DESC.

Memo's​

ToolArgumentenWat het doet
erd_add_memoVoegt een lege memo toe op een vrije plek en geeft de id ervan terug in createdIds.
erd_remove_memomemoIdVerwijdert een memo.
erd_change_memo_valuememoId, valueVervangt de tekst van een memo.
erd_change_memo_colormemoId, colorStelt de kleur van een memo in.
erd_move_memomemoId, x, yVerplaatst een memo naar een positie op het canvas.
erd_resize_memomemoId, width, heightWijzigt de grootte van een memo. De breedte moet minstens ongeveer 116 pixels zijn en de hoogte minstens 100. Levert geen stap in de geschiedenis op, omdat de editor het wijzigen van de grootte van een memo alleen bij slepen vastlegt.

Zolang memo's verborgen zijn met View Option → Memos, voegt erd_add_memo er toch een toe, en die blijft verborgen tot memo's weer worden getoond. erd_list en erd_get vermelden ook verborgen memo's.

Tabelgroepen​

Een tabelgroep is een kader met een naam dat achter zijn tabellen wordt getekend, en zijn kleur is te zien op het kader en over de koppen van zijn tabellen — zie Tabelgroepen. Een tabel zit in hooguit één groep. erd_move_table, erd_move_tables en erd_move_table_group veranderen nooit welke tabellen een groep bevat, waar ze een tabel ook neerzetten, terwijl in de editor een tabel bij een groep komt of eruit gaat afhankelijk van waar ze wordt neergezet — zie Tabellen toevoegen en verwijderen. erd_add_table_group en erd_set_table_group plaatsen tabellen in een groep, en erd_remove_table_group laat zijn tabellen in geen enkele groep achter. Een groep slaat een rechthoek op van minstens 160 pixels breed en 100 hoog, titelbalk inbegrepen, en de editor tekent het kader zo vergroot dat elk van zijn tabellen erin past.

ToolArgumentenWat het doet
erd_add_table_groupname, color?, x?, y?, width?, height?, tableIds?Voegt een groep toe en geeft de id ervan terug in createdIds. Geef ofwel tableIds door, ofwel een rechthoek: x, y, width en height samen. Met tableIds verlaat elke tabel de groep waarin ze zat, en wordt de rechthoek om de tabellen heen passend gemaakt zoals bij Geselecteerde tabellen groeperen. Een rechthoek neemt elke tabel zonder groep op waarvan het midden erbinnen ligt, zoals bij Een groep tekenen. Een lege name laat de groep zonder naam. Eén erd_undo verwijdert de groep en zet elke tabel terug in de groep waarin ze zat.
erd_remove_table_groupgroupIdVerwijdert een groep. De tabellen ervan blijven waar ze zijn, zonder groep.
erd_change_table_group_namegroupId, valueWijzigt de naam van een groep. Een lege string laat de groep zonder naam.
erd_change_table_group_colorgroupId, colorStelt de kleur van een groep in.
erd_move_table_groupgroupId, x, yVerplaatst een groep zodat de rechthoek op dat punt begint, met de tabellen ervan over dezelfde afstand, zoals slepen aan de titelbalk doet. Een verplaatsing van minder dan 20 pixels, horizontaal en verticaal bij elkaar opgeteld, levert geen stap in de geschiedenis op.
erd_resize_table_groupgroupId, x?, y?, width, heightStelt de rechthoek van een groep in, terwijl de tabellen ervan blijven waar ze zijn. Als x en y worden weggelaten, blijft de hoek behouden. Een rechthoek waarin de tabellen van de groep met hun marge niet passen, wordt geweigerd, met een bericht dat het kader noemt dat erin moet passen.
erd_set_table_grouptableIds, groupIdPlaatst tabellen in een groep, waarbij elke tabel de groep verlaat waarin ze zat. Een groupId van null of een lege string haalt ze uit elke groep.

Zolang groepen verborgen zijn met View Option → Table Groups, voegen deze tools nog steeds groepen toe en wijzigen ze groepen, die verborgen blijven tot groepen worden getoond — zie Groepen verbergen. erd_sort_tables houdt de tabellen van elke groep bij elkaar, erd_import_dbml en erd_import_json brengen groepen mee — zie Importeren — en erd_read schrijft met groupNames de DDL van gekozen groepen. Een versie van ERD Editor van vóór de tabelgroepen laat de groepen van een bestand vallen wanneer ze het bestand opslaat, zoals de VS Code-extensie vóór 4.0.0 en de Obsidian- en JetBrains-plug-ins vóór 1.0.0 doen — zie Bijwerken.

Instellingen​

Een agent stelt de instellingen van het schema zelf in: de database, de naam ervan en de scripts van Schema SQL. Elke andere instelling die het document opslaat, stelt de gebruiker in de editor in: de schakelaars van de weergaveopties, de opties van het tabblad Instellingen, de taal en de naamnotaties van de Codegenerator, het type aanhalingstekens en de vergrendelingen. Geen enkele tool wijzigt ze, behalve de imports in de modus replace: erd_import_json brengt de instellingen en vergrendelingen mee van het document dat hij laadt, en de andere vier zetten de weergave terug naar het begin van het canvas — zie Importeren. Server 1.0.0 heeft de tools verwijderd die ze instelden: 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 en erd_set_show.

erd_list en het formaat snapshot van erd_read rapporteren de instellingen zoals het bestand ze opslaat, met in lockSettings één vlag per vergrendeling: viewport, canvasType, language, tableNameCase, columnNameCase en bracketType. Een taal, naamnotatie of type aanhalingstekens die vergrendeld is, wordt gerapporteerd met de vergrendelde waarde, de waarde die het bestand bewaart en waarmee elke editor opent, wat het scherm van een editor ook toont. De weergave en het tabblad worden niet gerapporteerd.

erd_set_ddl_script levert een stap in de geschiedenis op. erd_set_database en erd_set_database_name leveren er geen op, dus erd_undo kan ze niet ongedaan maken.

ToolArgumentenWat het doet
erd_set_databasevalueStelt de database in: MariaDB, MSSQL, MySQL, Oracle, PostgreSQL, SQLite, Databricks of Snowflake. Dit bepaalt de gegevenstypen van de database en de DDL die erd_read schrijft als er geen vendor is opgegeven.
erd_set_database_namevalueStelt de databasenaam in, die de koppen use en createAndUse van erd_read noemen.
erd_set_ddl_scriptposition, sqlStelt een van de twee scripts in die rond de tabellen worden geschreven — zie Scripts vóór en na de tabellen. position is before, geschreven vóór de tabellen, zoals CREATE EXTENSION of CREATE SCHEMA, of after, geschreven na de tabellen, zoals GRANT of CREATE VIEW. sql vervangt het hele script, hooguit 10.000 tekens, en een lege string verwijdert het. Lees eerst het huidige script met het formaat scripts van erd_read.

Een script gaat ongewijzigd in de DDL van elke database, dus schrijf het voor de database van het document. Op MSSQL wordt een regel GO toegevoegd na een script waarvan de laatste regel niet GO is. Een versie van ERD Editor van vóór deze scripts laat de scripts van een bestand vallen wanneer ze het bestand opslaat, zoals de VS Code-extensie vóór 4.0.0 en de Obsidian- en JetBrains-plug-ins vóór 1.0.0 doen — zie Bijwerken.

Importeren​

Deze tools lezen een schema in zoals het importmenu van de editor dat doet — zie Bestanden importeren of exporteren. Elke tool krijgt de tekst als value, en mode: replace, de standaardwaarde, of append.

ToolArgumentenWat het doet
erd_import_sqlvalue, mode?Laadt SQL-DDL, instructies als CREATE TABLE en dergelijke.
erd_import_graphqlvalue, mode?Laadt een GraphQL-SDL.
erd_import_dbmlvalue, mode?Laadt DBML. Elke TableGroup wordt een tabelgroep van de tabellen die hij noemt — zie DBML.
erd_import_amlvalue, mode?Laadt AML.
erd_import_jsonvalue, mode?Laadt een JSON-document van erd-editor, zoals een ander .erd.json-bestand.

replace neemt de plaats van het document in, en erd_undo herstelt het vorige:

  • erd_import_sql, erd_import_graphql, erd_import_dbml en erd_import_aml vervangen elke tabel, relatie, index, memo en tabelgroep. Ze behouden de instellingen van het document, inclusief de vergrendelingen, behalve de weergave, die terugkeert naar het begin van het canvas op 100%.
  • erd_import_json vervangt het hele document, inclusief de instellingen: de instellingen en vergrendelingen van de JSON nemen de plaats in van die van dit document, en een JSON zonder vastgelegde vergrendelingen schakelt elke vergrendeling in en zet de weergave op het begin van het canvas. Om de instellingen van dit document te behouden, begin je met de tekst die het formaat json van erd_read geeft. Een lege tekst geeft een nieuw document, zoals het document dat erd_open_document met create aanmaakt.

append voegt de import toe aan het document, zoals Importeren en toevoegen in de editor dat doet, en één erd_undo maakt de hele toevoeging ongedaan:

  • Wat de tekst bevat, komt binnen als nieuwe entiteiten met nieuwe id's, in een blok onder alles wat het document bevat, verborgen memo's en tabelgroepen inbegrepen, uitgelijnd op de linkerrand daarvan. Elke tabel en instelling die er al is, blijft, ook een tabel met dezelfde naam: er wordt niets op naam samengevoegd.
  • Relaties en indexen worden alleen overgenomen tussen de tabellen die de import meebrengt, dus een refererende sleutel naar een tabel die de tekst niet declareert, vervalt.
  • erd_import_sql, erd_import_graphql en erd_import_aml voegen tabellen toe met hun relaties en indexen, en erd_import_dbml daarnaast de tabelgroepen. erd_import_json voegt tabellen, relaties, indexen, memo's en tabelgroepen toe, nooit de instellingen ervan, en weigert een lege tekst.

Een JSON-document behoudt zijn eigen indeling, inclusief zijn tabelgroepen: op de plek waar het zijn tabellen plaatst met replace, en binnen het toegevoegde blok met append. De tabellen van SQL, GraphQL, DBML en AML worden in rijen gezet, die met de minste kolommen eerst en de tabellen van elke groep bij elkaar, zoals erd_sort_tables ze plaatst, nooit volgens Flow zoals de eigen import van de editor ze indeelt wanneer dat kan. Die vier tools weigeren een lege tekst in beide modi.

erd_batch​

erd_batch voert meerdere bewerkingstools op volgorde uit als één bewerking, alles of niets.

  • operations bevat maximaal 100 items, elk { tool, as?, args? }, waarbij args de argumenten van de tool zijn zonder path.
  • De operaties worden eerst op een kopie van het document geprobeerd. Een geweigerde operatie wordt genoemd, zoals operations[1] erd_remove_table: …, en er wordt niets toegepast.
  • Eén erd_undo maakt de hele batch ongedaan, behalve de operaties die hij niet ongedaan kan maken en die de undoNote van het resultaat noemt: die van een tool die geen stap in de geschiedenis oplevert, zoals erd_set_database, en die het document hebben gewijzigd zonder er een op te leveren, zoals een korte erd_move_table_group. Een batch die helemaal geen stap in de geschiedenis heeft opgeleverd, wordt door erd_undo overgeslagen. historyEntries in het resultaat telt de stappen in de geschiedenis van de editor binnen de batch, niet het aantal aanroepen van erd_undo.
  • In een live sessie neemt de editor de hele batch over of niets ervan.

Een agent kan vóór de aanroep niet weten welke id's een batch aanmaakt, dus met een operatie die met as een naam krijgt, kan een latere operatie ernaar verwijzen: $name of $name.0 voor de eerste aangemaakte id, $name.1 voor de tweede en $name.last voor de laatste. Een naam bestaat uit ASCII-letters, cijfers en underscores, begint niet met een cijfer en hoort bij slechts één operatie. Een verwijzing wordt alleen omgezet waar een argument de id van een entiteit verwacht, dus een naam of opmerking met de tekst $x blijft tekst.

Een tabel met haar kolommen en een relatie, in één aanroep:

{
"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 en haar sleutel id krijgen hun naam vóór de relatie, dus de kolom met refererende sleutel die de relatie aan orders toevoegt, is users_id.

Resultaten​

Een bewerking antwoordt met één regel JSON:

{"tool":"erd_add_table","mode":"live","createdIds":["03h17be2plxpj5n59tqag7ogj"],"batches":1,"historyEntries":1}
VeldBetekenis
modelive of headless — zie Live en headless.
createdIdsDe id's van wat de aanroep heeft aangemaakt, op volgorde.
batches, historyEntriesHoeveel wijzigingsbatches de aanroep heeft verstuurd en hoeveel stappen in de geschiedenis van de editor hij heeft opgeleverd.
undoable, undoNoteundoable is false wanneer erd_undo de aanroep zal overslaan, en undoNote zegt waarom: de tool levert geen stap in de geschiedenis op, de aanroep heeft het document gewijzigd zonder er een op te leveren, zoals een erd_move_table_group van minder dan 20 pixels, of het document had de waarde al. Een resultaat van erd_batch bevat altijd een undoNote. Als de batch een stap in de geschiedenis heeft opgeleverd, zegt de notitie dat één erd_undo de batch ongedaan maakt en noemt ze elke operatie die daarbij blijft staan; als de batch er geen heeft opgeleverd, bevat het resultaat undoable: false en zegt de notitie dat erd_undo de batch overslaat.
mismatchAanwezig wanneer de aanroep een ander aantal batches of stappen in de geschiedenis heeft opgeleverd dan de tool opgeeft.
notesAanwezig wanneer er iets aan de sessie is veranderd, zoals een editor die is afgesloten of het document niet meer bedient, of een bestand dat op schijf is gewijzigd.

Een weigering is een foutresultaat met een code en een bericht dat zegt wat je moet doen:

{"error":{"code":"notFound","message":"tableId nope names no live table; read the document for current ids"}}
codeWaarom
notFoundEen id verwijst naar niets wat nog bestaat, of het bestand bestaat niet.
invalidArgsEen argument ontbreekt of heeft een verkeerde waarde.
invalidPathHet pad is geen ERD-document. Op Windows ook een pad met een naam die Windows niet opslaat zoals hij geschreven is, of een pad dat uitkomt bij een document dat een editor onder een ander pad beheert, dat het bericht noemt.
invalidDocumentHet bestand is geen document dat de editor kan lezen.
tooLargeEen leesopdracht past niet in één antwoord.
blockedEen editor met uitgeschakelde hub beheert het document. Het bericht zegt hoe je de hub inschakelt: vertrouw in VS Code de werkruimte en schakel dineug.erd-editor.agentHub.enabled in, of laad het venster opnieuw; schakel in Obsidian Coding agents in, of laad Obsidian opnieuw; schakel in een JetBrains-IDE Coding agents in, of start de IDE opnieuw als Coding agents al is ingeschakeld.
hubDisabledEen JetBrains-IDE beheert het document alleen in een project dat hij niet vertrouwt. Lezen werkt nog; vertrouw het project om de agent te laten bewerken.
conflictHet bestand is tijdens de aanroep op schijf gewijzigd. Er is niets geschreven.
hubAppeared, hubGoneEen editor is een document gaan bedienen dat de agent op schijf aan het bewerken was, of de editor die het bediende draait nog, maar zijn lockbestand en verbinding zijn verdwenen. Er is niets geschreven.
notSavederd_save kon het document van de editor niet opslaan.
readonlyDe editor beheert het document in alleen-lezenmodus, zoals een bestand waarnaar hij niet kan schrijven of dat hij niet als diagram kan lezen. Zonder editor is het bestand zelf alleen-lezen, zoals een Perforce- of TFVC-bestand dat niet is uitgecheckt. Er is niets geschreven.
protocolMismatchDe ERD Editor-extensie of -plug-in van de editor en de server gebruiken verschillende protocolversies, zoals server 1.0.0 met een VS Code-extensie van versie 3.x. Ook leesopdrachten worden geweigerd, en het bericht noemt de kant die moet worden bijgewerkt — zie Bijwerken.
hubUnreachable, timeout, disconnectedDe hub van een editor accepteerde de verbinding niet, antwoordde niet binnen 30 seconden of verbrak de verbinding tijdens de aanroep. Op Windows betekent hubUnreachable ook dat Windows de agent van de hub heeft geweerd: de editor draait met meer rechten dan de agent, zoals wanneer hij als administrator is gestart en de agent niet, of de agent draait in een sandbox.

Andere codes komen minder vaak voor, en elke weigering bevat een bericht dat zegt wat er is gebeurd.

De bewerkingstools, erd_batch en de drie leestools weigeren een argument dat ze niet declareren, of een van het verkeerde type, met een JSON-RPC-fout voor ongeldige parameters (-32602) voordat ze het document aanraken, zodat een verkeerd gespeld argument nooit stilzwijgend wordt genegeerd. De vijf sessietools negeren argumenten die ze niet kennen.