ابزارها
سرور 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 آنها را مانند ویرایشهای خودتان ذخیره میکنند و این ابزار آنها را بیدرنگ مینویسد. در حالت بدون رابط کاربری، هر ویرایش از قبل نوشته شده است و این ابزار کاری انجام نمیدهد. | |
erd_undo | آخرین ویرایش این عامل را واگرد میکند و هرگز ویرایشهای خودتان را واگرد نمیکند. فراخوانیهایی که هیچ مدخل واگردی ثبت نکردهاند نادیده گرفته میشوند و نامشان ذکر میشود. | |
erd_redo | ویرایشی را که erd_undo آخرین بار واگرد کرده است دوباره اعمال میکند. |
برای آنچه ذخیره کردن و واگرد در هر حالت انجام میدهند، زنده و بدون رابط کاربری را ببینید.
خواندن سند
| ابزار | آرگومانها | کاری که انجام میدهد |
|---|---|---|
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":"…"} که هر کدام در صورت تنظیم نشدن خالی است، هر چقدر هم طرحواره بزرگ باشد. |
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_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 ساده بیرون از PostgreSQL، MySQL و MariaDB همان serial میماند؛ رابطههای شناسا را ببینید. 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 | جدولها را در یک گروه میگذارد و هر یک از گروهی که در آن بوده خارج میشود. مقدار 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_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? | DDL به زبان SQL را بارگذاری میکند، یعنی دستورهای CREATE TABLE و مانند آن. |
erd_import_graphql | value، mode? | یک SDL از GraphQL را بارگذاری میکند. |
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را. - در نشست زنده، ویرایشگر یا کل دسته را میپذیرد یا هیچ بخشی از آن را.
عامل پیش از فراخوانی نمیتواند شناسههایی را که یک دسته میسازد بداند، پس عملیاتی که با 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؛ زنده و بدون رابط کاربری را ببینید. |
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 | ویرایشگری شروع به سرویس دادن به سندی کرد که عامل آن را روی دیسک ویرایش میکرد، یا ویرایشگری که به آن سرویس میداد هنوز در حال اجراست اما فایل قفل و اتصالش از بین رفتهاند. هیچ چیز نوشته نشد. |
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 و سه ابزار خواندن، آرگومانی را که تعریف نکردهاند یا آرگومانی با نوع نادرست را پیش از دست زدن به سند با خطای invalid params در JSON-RPC (-32602) رد میکنند، پس آرگومانی که اشتباه نوشته شده هرگز بیصدا کنار گذاشته نمیشود.
پنج ابزار نشست آرگومانهایی را که نمیشناسند نادیده میگیرند.