Truss: نقشهٔ زندهٔ دیتابیس لاراول
خلاصهٔ کاملتر
نویسنده میگه ماجرا از یه دردسر آشنا شروع شده: وارد یه پروژه میشی با چهل تا جدول که نصفشون مستند نیستن و معلوم نیست کدوم به کدوم وصله. دستورهای خود لاراول مثل db:show و db:table یه پله بهترن، ولی هر بار فقط یه جدول رو اون هم به شکل متنی نشون میدن؛ شکل کلی اسکیما و اینکه جدولها واقعاً چطور به هم وصلن هیچجا دیده نمیشه.
Truss دقیقاً همین شکاف رو پر میکنه. یه ویوئر ساختار دیتابیسه که اسکیمای واقعی رو اسکن میکنه — نه فایلهای migration — و با Mermaid یه دیاگرام ER اسکرولشو و زومشدنی داخل خود اپ رندر میکنه. با کلیک روی هر جدول وارد حالت focus میشی و فقط همون جدول و همسایههای کلید خارجیش میمونن؛ فیلتر بر اساس اسم جدول هم داری و میتونی بین تایپهای نیتیو دیتابیس و برچسبهای سبک لاراول سوییچ کنی.
مهمترین تصمیم طراحیش اینه که فقط ساختار رو میخونه: جدول، ستون، کلید و ایندکس، و هیچوقت حتی یه ردیف داده رو کوئری نمیکنه. به گفتهٔ نویسنده همین چیزیه که اجازه میده جایی اجراش کنی که واقعاً بهش نیاز داری، یعنی staging و production که اسکیمای واقعی از migrationها فاصله گرفته. پیشفرض فقط روی local فعاله و برای محیطهای دیگه باید صریحاً روشنش کنی و پشت گیت دسترسی viewTruss بذاریش.
کنار داشبورد، دو تا دستور آرتیزان هم داره: truss:show همون اسنپشات کششده رو به شکل جدول تو ترمینال چاپ میکنه — هر ردیف یه جدول با تعداد ستون و کلید خارجی — و truss:open داشبورد رو تو مرورگر باز میکنه و در هر حال URL رو چاپ میکنه تا روی هاست بدون مرورگر هم به درد بخوره. هر دو زیر فضای نام truss: نشستن، نه schema:، تا اگه روزی خود فریمورک schema:show بیاره تداخل پیش نیاد.
Mermaid و فونتها داخل خود پکیج vendor شدن، پس آفلاین و زیر CSP سختگیرانه هم کار میکنه و چیزی به CDN بیرونی وصل نیست. اسنپشات کش میشه و بعد از هر migration خودش دوباره ساخته میشه. کل دیاگرام رو با همون فیلتر و focus فعلی میشه PNG یا SVG گرفت، هر جدول رو JSON/CSV، و کل اسکیما رو به شکل دیکشنری دادهٔ Markdown یا فایل DBML ذخیره کرد.
نکات کلیدی:
- ویوئر زندهٔ ساختار دیتابیس برای لاراول؛ اسکیمای واقعی رو میخونه، نه فایلهای migration
- حالت focus، فیلتر اسم جدول، پن و زوم نقشهای با auto-fit
- فقط ساختار میخونه و هیچ ردیفی رو کوئری نمیکنه؛ برای همین روی محیطهای واقعی هم قابل اجراست
- خارج از local باید صریحاً فعال بشه و پشت گیت viewTruss قرار بگیره
- دستورهای truss:show و truss:open برای ترمینال
- خروجی PNG/SVG از کل دیاگرام، JSON/CSV در سطح جدول، و دیکشنری دادهٔ Markdown یا DBML
- نسخهٔ ۱.۳.۱ اینترواسپکشن رو به دیتابیس خود کانکشن محدود کرد؛ نیازمند PHP 8.3+ و Laravel 12+
- قدم بعدی طبق رودمپ عمومی، schema diff ـه




