پرش به محتوای اصلی

ابزارها

سرور 63 ابزار ارائه می‌دهد: پنج ابزار نشست، سه ابزار خواندن، 54 ابزار ویرایش که هر یک برای یک عملیات ویرایش است و erd_batch که چند ابزار ویرایش را به‌صورت یک ویرایش اجرا می‌کند.

همهٔ ابزارها به‌جز erd_list_documents مسیر سند را در path به‌عنوان نخستین آرگومان می‌گیرند و در جدول‌های زیر این آرگومان آورده نشده است. آرگومانی که با ? مشخص شده، اختیاری است.

ابزارهای نشست​

ابزارآرگومان‌هاکاری که انجام می‌دهد
erd_list_documentsاسناد ERD را با path، open، active، dirty و readonly فهرست می‌کند: اسناد ویرایشگری که به پوشهٔ کاری سرویس می‌دهد، که در یک IDE از JetBrains شامل همهٔ پروژه‌های باز است، و در غیر این صورت فایل‌های ERD درون پوشهٔ کاری.
erd_open_documentcreate?سندی را برای ویرایش باز می‌کند؛ اگر ویرایشگری به آن سرویس دهد، در ERD Editor همان ویرایشگر. با create، اگر فایل وجود نداشته باشد ابتدا آن را می‌سازد و به نامی که پسوند ندارد .erd.json افزوده می‌شود.
erd_saveسندی را که در اختیار یک ویرایشگر است ذخیره می‌کند. VS Code ویرایش‌های عامل را تا فراخوانی این ابزار ذخیره‌نشده نگه می‌دارد؛ Obsidian و یک IDE از JetBrains آن‌ها را مانند ویرایش‌های خودتان ذخیره می‌کنند و این ابزار آن‌ها را بی‌درنگ می‌نویسد. در حالت بدون رابط کاربری، هر ویرایش از قبل نوشته شده است و این ابزار کاری انجام نمی‌دهد.
erd_undoآخرین ویرایش این عامل را واگرد می‌کند و هرگز ویرایش‌های خودتان را واگرد نمی‌کند. فراخوانی‌هایی که هیچ مدخل واگردی ثبت نکرده‌اند نادیده گرفته می‌شوند و نامشان ذکر می‌شود.
erd_redoویرایشی را که erd_undo آخرین بار واگرد کرده است دوباره اعمال می‌کند.

برای آنچه ذخیره کردن و واگرد در هر حالت انجام می‌دهند، زنده و بدون رابط کاربری را ببینید.

خواندن سند​

ابزارآرگومان‌هاکاری که انجام می‌دهد
erd_listquery?، offset?، limit?، namesOnly?تنظیمات و تعدادها، سپس صفحه‌ای از جدول‌ها با شاخص‌ها و رابطه‌هایشان، هر جدول با شناسه، موقعیت و اندازه‌اش روی بوم، تعداد ستون‌ها و گروه جدولش اگر در گروهی باشد. اگر جست‌وجو نکند، پس از جدول‌ها گروه‌های جدول و سپس یادداشت‌ها می‌آیند.
erd_gettableIds?، tableNames?، relationshipIds?، indexIds?، memoIds?، tableGroupIds?موجودیت‌های مشخص‌شده، به‌طور کامل: جدول‌ها با ستون‌ها و گروه جدولشان، رابطه‌ها با ستون‌ها و onDelete و onUpdate آن‌ها، شاخص‌ها با ستون‌هایشان، یادداشت‌ها با متنشان، گروه‌های جدول با جدول‌هایشان.
erd_readformat، vendor?، statements?، header?، tableIds?، tableNames?، groupNames?کل سند یک‌جا در یکی از چهار قالب، یا DDL فقط برخی جدول‌ها یا گروه‌های جدول.

عامل شناسه‌ها را با erd_list پیدا می‌کند، ستون‌ها و جزئیات دیگر را با erd_get می‌خواند و همان شناسه‌ها را به ابزارهای ویرایش می‌دهد. اندازهٔ یک جدول در erd_list کادری است که روی بوم اشغال می‌کند: ارتفاع دقیق و عرض تقریبی. گروه جدول با مستطیلی که ذخیره می‌کند، همراه با نام، رنگ و تعداد جدول‌هایش فهرست می‌شود. هر رابطه یک بار و همراه با یکی از دو جدولش فهرست می‌شود. تنظیماتی که erd_list و erd_read گزارش می‌دهند همان‌هایی است که فایل ذخیره می‌کند؛ تنظیمات را ببینید.

erd_read یکی از چهار قالب را می‌گیرد:

formatآنچه پاسخ می‌دهد
snapshotJSON فشرده‌ای شامل همهٔ موجودیت‌ها با شناسه‌هایشان، از جمله گروه‌های جدول، و تنظیمات همراه با اسکریپت‌های طرح‌واره SQL. آنچه را از یک بیننده به بینندهٔ دیگر فرق می‌کند کنار می‌گذارد: عرض‌های اندازه‌گیری‌شده، ترتیب لایه‌ها، نما و زبانه. در طرح‌وارهٔ بزرگ حجیم است.
sqlDDL برای یکی از هشت پایگاه داده: 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":"…"} که هر کدام در صورت تنظیم نشدن خالی است، هر چقدر هم طرح‌واره بزرگ باشد.

vendor، statements، header، tableIds، tableNames و groupNames را فقط قالب sql می‌پذیرد و هر قالب دیگری آن‌ها را رد می‌کند.

  • statements: create که پیش‌فرض است؛ ifNotExists که در MySQL، MariaDB، PostgreSQL، SQLite و Databricks دستور CREATE TABLE IF NOT EXISTS و در بقیه 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 فقط نام جدول‌ها را فهرست می‌کند، حدود 2,000 نام کوتاه در یک پاسخ.
  • 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_tabletableIdیک جدول را همراه با ستون‌ها، شاخص‌ها و همهٔ رابطه‌هایی که به آن متصل‌اند حذف می‌کند.
erd_change_table_nametableId، valueنام یک جدول را تغییر می‌دهد.
erd_change_table_commenttableId، valueتوضیح یک جدول را تنظیم می‌کند. رشتهٔ خالی آن را پاک می‌کند.
erd_change_table_colortableId، colorرنگ یک جدول را تنظیم می‌کند.
erd_move_tabletableId، x، yیک جدول را به موقعیتی روی بوم جابه‌جا می‌کند.
erd_move_tablespositionsچند جدول را در یک ویرایش جابه‌جا می‌کند که یک بار erd_undo آن را واگرد می‌کند. positions برای هر جدول یک { tableId, x, y } دارد و هر جدول حداکثر یک بار در آن می‌آید.
erd_sort_tablesهمهٔ جدول‌ها را در ردیف‌هایی روی بوم می‌چیند، ابتدا جدول‌های با کمترین ستون، همان‌طور که erd_import_sql، erd_import_graphql، erd_import_dbml و erd_import_aml آن‌ها را می‌چینند. جدول‌های یک گروه جدول کنار هم می‌مانند و کادر هر گروه طوری تنظیم می‌شود که دور آن‌ها را بگیرد.

ستون‌ها​

ابزارآرگومان‌هاکاری که انجام می‌دهد
erd_add_columntableIdیک ستون خالی به یک جدول اضافه می‌کند و شناسهٔ آن را در createdIds برمی‌گرداند.
erd_remove_columnstableId، columnIdsستون‌هایی را از یک جدول حذف می‌کند، همراه با رابطه‌ها و ورودی‌های شاخصی که از آن‌ها استفاده می‌کنند.
erd_change_column_nametableId، columnId، valueنام یک ستون را تغییر می‌دهد.
erd_change_column_data_typetableId، columnId، valueنوع داده را تنظیم می‌کند، مانند INT یا VARCHAR(255). تا وقتی همگام‌سازی نوع داده در رابطه‌ها روشن است، تغییر مانند ویرایشگر در هر دو جهت رابطه‌ها پیش می‌رود: نوع serial به‌صورت نوع عدد صحیحی که ذخیره می‌کند به کلیدهای خارجی می‌رسد، همان‌طور که erd_add_relationship آن را کپی می‌کند، و کلید serial وقتی یکی از کلیدهای خارجی‌اش تغییر کند نوع خود را نگه می‌دارد و تغییر همان‌جا متوقف می‌شود. روشن یا خاموش کردن همگام‌سازی با کاربر است و erd_list آن را به‌صورت relationshipDataTypeSync گزارش می‌کند.
erd_change_column_defaulttableId، columnId، valueمقدار پیش‌فرض را به‌صورت متن SQL تنظیم می‌کند. رشتهٔ خالی آن را پاک می‌کند.
erd_change_column_commenttableId، columnId، valueتوضیح را تنظیم می‌کند. رشتهٔ خالی آن را پاک می‌کند.
erd_set_column_primary_keytableId، columnId، valuetrue ستون را بخشی از کلید اصلی می‌کند و false آن را از کلید اصلی بیرون می‌آورد.
erd_set_column_uniquetableId، columnId، valueتعیین می‌کند ستون یکتا باشد یا نه.
erd_set_column_not_nulltableId، columnId، valueتعیین می‌کند ستون NOT NULL باشد یا نه.
erd_set_column_auto_incrementtableId، columnId، valueتعیین می‌کند ستون افزایش خودکار داشته باشد یا نه.
erd_move_columntableId، 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_relationshipstartTableId، endTableId، relationshipType، onDelete?، onUpdate?دو جدول را به هم مرتبط می‌کند. کلید اصلی والد را به‌صورت ستون‌های کلید خارجی در فرزند کپی می‌کند و اگر والد کلید اصلی نداشته باشد، ابتدا یک ستون کلید اصلی می‌سازد. هر ستون کلید خارجی همان‌طور نام‌گذاری می‌شود که رسم یک رابطه در ویرایشگر آن را نام‌گذاری می‌کند: از کلید id در جدول users نام users_id به دست می‌آید و کلیدی مانند member_id نام خود را حفظ می‌کند؛ نام ستون‌های کلید خارجی را ببینید. هر یک نوع دادهٔ کلید خود را کپی می‌کند، جز اینکه کلید serial نوع عدد صحیحی را که ذخیره می‌کند می‌دهد، مانند integer برای serial4، و نوع serial ساده بیرون از PostgreSQL، MySQL و MariaDB همان serial می‌ماند؛ رابطه‌های شناسا را ببینید. createdIds آن ستون کلید تازه را اگر ساخته شده باشد، ستون‌های کلید خارجی و در آخر شناسهٔ رابطه را دارد.
erd_link_columnsstartTableId، startColumnIds، endTableId، endColumnIds، relationshipType، onDelete?، onUpdate?رابطه‌ای میان ستون‌هایی که از قبل وجود دارند رسم می‌کند و ستون‌های آغاز و پایان را بر اساس موقعیت جفت می‌کند. نام هیچ ستونی را تغییر نمی‌دهد و هیچ نوع داده‌ای را عوض نمی‌کند.
erd_remove_relationshiprelationshipIdیک خط رابطه را حذف می‌کند. ستون‌های کلید خارجی آن در جدول می‌مانند.
erd_change_relationship_typerelationshipId، relationshipTypeکاردینالیتی یک رابطه را تغییر می‌دهد.
erd_change_relationship_on_deleterelationshipId، onDeleteکنش ON DELETE یک رابطه را تنظیم می‌کند: اینکه حذف یک ردیف والد با ردیف‌های فرزندش چه می‌کند.
erd_change_relationship_on_updaterelationshipId، onUpdateکنش ON UPDATE یک رابطه را تنظیم می‌کند: اینکه تغییر یک کلید والد با ردیف‌های فرزندش چه می‌کند.

erd_add_relationship ستون‌های کلید خارجی را هنگام اجرا نام‌گذاری می‌کند، پس ابتدا جدول والد و کلید اصلی آن را نام‌گذاری کنید.

هیچ ابزاری ستون‌های یک رابطهٔ موجود را آن‌طور که نگاشت ستون‌ها در ویرایشگر انجام می‌دهد تغییر نمی‌دهد. برای نگاشت کردن یک رابطه روی ستون‌های دیگر، erd_remove_relationship را که ستون‌های کلید خارجی آن را در جدول باقی می‌گذارد و erd_link_columns را با ستون‌های مورد نظر در یک erd_batch اجرا کنید که یک بار erd_undo آن را واگرد می‌کند.

شاخص‌ها​

شناسهٔ ستون شاخص یک ورودی از فهرست ستون‌های شاخص است که erd_get می‌دهد، نه شناسهٔ ستون جدول.

ابزارآرگومان‌هاکاری که انجام می‌دهد
erd_add_indextableIdیک شاخص خالی به یک جدول اضافه می‌کند و شناسهٔ آن را در createdIds برمی‌گرداند.
erd_remove_indexindexIdیک شاخص را حذف می‌کند.
erd_change_index_nameindexId، valueنام یک شاخص را تغییر می‌دهد.
erd_set_index_uniqueindexId، valueتعیین می‌کند شاخص یکتا باشد یا نه.
erd_add_index_columnindexId، columnIdستونی از جدول شاخص را اضافه می‌کند و شناسهٔ ستون شاخص تازه را برمی‌گرداند. ستونی که از قبل در شاخص باشد دست‌نخورده می‌ماند.
erd_remove_index_columnindexId، indexColumnIdیک ستون را از یک شاخص حذف می‌کند.
erd_move_index_columnindexId، indexColumnId، targetIndexColumnIdیک ستون را درون شاخص به موقعیت ستون دیگری از همان شاخص جابه‌جا می‌کند.
erd_set_index_column_orderindexId، indexColumnId، orderTypeترتیب مرتب‌سازی یک ستون در شاخص را تنظیم می‌کند، ASC یا DESC.

یادداشت‌ها​

ابزارآرگومان‌هاکاری که انجام می‌دهد
erd_add_memoیک یادداشت خالی در جایی خالی اضافه می‌کند و شناسهٔ آن را در createdIds برمی‌گرداند.
erd_remove_memomemoIdیک یادداشت را حذف می‌کند.
erd_change_memo_valuememoId، valueمتن یک یادداشت را جایگزین می‌کند.
erd_change_memo_colormemoId، colorرنگ یک یادداشت را تنظیم می‌کند.
erd_move_memomemoId، x، yیک یادداشت را به موقعیتی روی بوم جابه‌جا می‌کند.
erd_resize_memomemoId، 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_groupname، color?، x?، y?، width?، height?، tableIds?یک گروه اضافه می‌کند و شناسهٔ آن را در createdIds برمی‌گرداند. یا tableIds را بدهید یا یک مستطیل، یعنی x، y، width و height را با هم. با tableIds، هر جدول از گروهی که در آن بوده خارج می‌شود و مستطیل، همان‌طور که در گروه‌بندی جدول‌های انتخاب‌شده، طوری تنظیم می‌شود که دور آن‌ها را بگیرد. یک مستطیل، همان‌طور که رسم گروه انجام می‌دهد، هر جدول بدون گروهی را که مرکزش درون آن باشد دربر می‌گیرد. اگر name خالی باشد، گروه بی‌نام می‌ماند. یک بار erd_undo گروه را حذف می‌کند و هر جدول را به گروهی که در آن بوده برمی‌گرداند.
erd_remove_table_groupgroupIdیک گروه را حذف می‌کند. جدول‌هایش در جای خود و بدون گروه می‌مانند.
erd_change_table_group_namegroupId، valueنام یک گروه را تغییر می‌دهد. رشتهٔ خالی آن را بی‌نام می‌گذارد.
erd_change_table_group_colorgroupId، colorرنگ یک گروه را تنظیم می‌کند.
erd_move_table_groupgroupId، x، yیک گروه را جابه‌جا می‌کند تا مستطیلش از آن نقطه شروع شود و جدول‌هایش را به همان اندازه جابه‌جا می‌کند، همان‌طور که کشیدن نوار عنوان آن انجام می‌دهد. جابه‌جایی کمتر از 20 پیکسل، با جمع جابه‌جایی افقی و عمودی، هیچ مدخل واگردی ثبت نمی‌کند.
erd_resize_table_groupgroupId، x?، y?، width، heightمستطیل یک گروه را تنظیم می‌کند، در حالی که جدول‌هایش در جای خود می‌مانند. اگر x و y داده نشوند، گوشهٔ آن ثابت می‌ماند. مستطیلی که جدول‌های گروه را همراه با فاصلهٔ داخلی‌شان در خود جا ندهد رد می‌شود، با پیامی که کادری را که مستطیل باید دربر بگیرد مشخص می‌کند.
erd_set_table_grouptableIds، groupIdجدول‌ها را در یک گروه می‌گذارد و هر یک از گروهی که در آن بوده خارج می‌شود. مقدار null یا رشتهٔ خالی برای groupId آن‌ها را از هر گروهی خارج می‌کند.

تا وقتی گروه‌ها با View Option → Table Groups پنهان‌اند، این ابزارها باز هم گروه‌ها را اضافه و تغییر می‌دهند و این گروه‌ها تا وقتی گروه‌ها نمایش داده شوند پنهان می‌مانند؛ پنهان کردن گروه‌ها را ببینید. erd_sort_tables جدول‌های هر گروه را کنار هم نگه می‌دارد، erd_import_dbml و erd_import_json گروه‌ها را می‌آورند — وارد کردن را ببینید — و erd_read با groupNames، DDL گروه‌های انتخاب‌شده را می‌نویسد. نسخه‌ای از 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_databasevalueپایگاه داده را تنظیم می‌کند: MariaDB، MSSQL، MySQL، Oracle، PostgreSQL، SQLite، Databricks یا Snowflake. انواع دادهٔ پایگاه داده و نیز DDL خروجی erd_read را در صورتی که vendor داده نشود تعیین می‌کند.
erd_set_database_namevalueنام پایگاه داده را تنظیم می‌کند، همان نامی که سرآیندهای use و createAndUse در erd_read می‌آورند.
erd_set_ddl_scriptposition، 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_sqlvalue، mode?DDL به زبان SQL را بارگذاری می‌کند، یعنی دستورهای CREATE TABLE و مانند آن.
erd_import_graphqlvalue، mode?یک SDL از GraphQL را بارگذاری می‌کند.
erd_import_dbmlvalue، mode?DBML را بارگذاری می‌کند. هر TableGroup به یک گروه جدول از جدول‌هایی که نام می‌برد تبدیل می‌شود؛ DBML را ببینید.
erd_import_amlvalue، mode?AML را بارگذاری می‌کند.
erd_import_jsonvalue، 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 را.
  • در نشست زنده، ویرایشگر یا کل دسته را می‌پذیرد یا هیچ بخشی از آن را.

عامل پیش از فراخوانی نمی‌تواند شناسه‌هایی را که یک دسته می‌سازد بداند، پس عملیاتی که با 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}
فیلدمعنا
modelive یا headless؛ زنده و بدون رابط کاربری را ببینید.
createdIdsشناسه‌های آنچه فراخوانی ساخته است، به ترتیب.
batches، historyEntriesتعداد دسته‌های تغییری که فراخوانی فرستاده و تعداد مدخل‌های تاریخچهٔ ویرایشگر که ثبت کرده است.
undoable، undoNoteوقتی erd_undo این فراخوانی را نادیده بگیرد، undoable برابر false است و 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ویرایشگری شروع به سرویس دادن به سندی کرد که عامل آن را روی دیسک ویرایش می‌کرد، یا ویرایشگری که به آن سرویس می‌داد هنوز در حال اجراست اما فایل قفل و اتصالش از بین رفته‌اند. هیچ چیز نوشته نشد.
notSavederd_save نتوانست سند ویرایشگر را ذخیره کند.
readonlyویرایشگر سند را به‌صورت فقط خواندنی در اختیار دارد، مانند فایلی که نمی‌تواند در آن بنویسد یا نمی‌تواند آن را به‌صورت نمودار بخواند. بدون ویرایشگر، خود فایل فقط خواندنی است، مانند فایلی از Perforce یا TFVC که چک‌اوت نشده است. هیچ چیز نوشته نشد.
protocolMismatchافزونه یا پلاگین ERD Editor در ویرایشگر و سرور از نسخه‌های متفاوتی از پروتکل استفاده می‌کنند، مانند سرور نسخهٔ 1.0.0 با افزونهٔ VS Code نسخهٔ 3.x. خواندن‌ها هم رد می‌شوند و پیام سمتی را که باید به‌روزرسانی شود نام می‌برد؛ به‌روزرسانی را ببینید.
hubUnreachable، timeout، disconnectedهاب یک ویرایشگر اتصال را نپذیرفت، در 30 ثانیه پاسخ نداد، یا در طول فراخوانی اتصال را قطع کرد. در Windows، hubUnreachable همچنین به این معناست که Windows عامل را از هاب دور نگه داشته است: ویرایشگر با دسترسی‌هایی بیشتر از عامل اجرا می‌شود، مانند وقتی که ویرایشگر با دسترسی مدیر سیستم اجرا شده و عامل نه، یا عامل در یک سندباکس اجرا می‌شود.

کدهای دیگر کمیاب‌ترند و هر پاسخ رد پیامی دارد که می‌گوید چه اتفاقی افتاده است.

ابزارهای ویرایش، erd_batch و سه ابزار خواندن، آرگومانی را که تعریف نکرده‌اند یا آرگومانی با نوع نادرست را پیش از دست زدن به سند با خطای invalid params در JSON-RPC (-32602) رد می‌کنند، پس آرگومانی که اشتباه نوشته شده هرگز بی‌صدا کنار گذاشته نمی‌شود. پنج ابزار نشست آرگومان‌هایی را که نمی‌شناسند نادیده می‌گیرند.