اگر از پیچیدگیهای ORM خسته شدهاید اما از ترس خطاهای زمان اجرا جرئت نوشتن SQL خام را ندارید، این ابزار دقیقاً برای شماست. تصور کنید بتوانید با سرعت SQL خام کد بزنید اما هر اشتباه در نام یک ستون، بلافاصله در محیط کدنویسی با خطای قرمز مشخص شود.
در اکوسیستم فعلی TypeScript، برنامهنویسان معمولاً بین سرعت بالای SQL خام و امنیت ORM (Object-Relational Mapper) — که شبیه به یک مترجم است و زبان پایگاهداده را به زبان برنامهنویسی تبدیل میکند — یکی را انتخاب میکنند. bun-sqlgen که در ۲۳ ژوئن ۲۰۲۶ منتشر شد، این موازنه را میشکند. همانطور که در تحلیلهای پیشین ما درباره بهینهسازی لایههای دسترسی به داده اشاره کردیم، حذف لایههای واسط اضافی همیشه منجر به افزایش چشمگیر عملکرد میشود.
طبق مستندات github.com، این ابزار از مهاجرتهای (Migrations) پایگاهداده به عنوان تنها منبع حقیقت استفاده میکند. این ابزار کوئریها را در برابر یک نمونه زنده از Postgres یا SQLite اعتبارسنجی میکند تا مطمئن شود کوچکترین غلط املایی در نام ستونها، بهجای کرش کردن برنامه در محیط عملیاتی، منجر به خطای کامپایل شود.
سازوکار فنی این ابزار بر پایه یک سیستم تگگذاری استوار است. توسعهدهندگان کلاینت خود را با withTypes میپوشانند و به کوئریها نامی اختصاص میدهند (مثلاً sql.GetUser). سپس ابزار یک فایل src/queries.gen.d.ts تولید میکند که خروجی پایگاهداده را مستقیماً به تایپهای TypeScript نگاشت میکند.
ویژگیهای فنی کلیدی عبارتند از:
- بررسی زنده طرح (Schema): اعتبارسنجی کوئریها در برابر دیتابیس واقعی بدون نیاز به Docker.
- پشتیبانی از گویشها: سازگاری بومی با Postgres و SQLite.
- جایگزینی مقادیر تهی (Nullability): کنترل دقیق روی فیلدهای اختیاری برای جلوگیری از خطاهای رایج «احتمالاً تهی است».
- اعتبارسنجی زمان ساخت: سرعت اجرا به قدری بالاست که با هر بار ذخیره فایل، کد را بررسی میکند.
به گزارش توسعهدهندگان این پروژه، این رویکرد «سوپِ ژنریک» (Generic Soup) را که در پیکربندیهای پیچیده ORM دیده میشود، حذف میکند. دیگر نیازی نیست برای هر نتیجهی کوئری، اینترفیسهای دستی بنویسید؛ ابزار این کار را بهصورت خودکار از روی مجموعه بازگشتی SQL انجام میدهد.
گام بعدی شما
- ابزار را با دستور
bun add @ilbertt/bun-sqlgenنصب کنید. - مسیر پوشه Migrationهای خود را از طریق CLI به ژنراتور معرفی کنید.
- نمونههای پیادهسازی شده در پوشه Examples گیتهاب را برای بهینهسازی ساختار کوئریها بررسی کنید.
اما تأثیر این تغییر در سرعت استنتاج دیتابیسها حتی خیرهکنندهتر است؛ برای درک بیشتر، تحلیل ما درباره مدیریت حافظه در محیطهای توزیعشده را بخوانید.




گفتگو