عن المشروع

Bun هو ORM حديث للغة Go مصمم للمطورين الذين يفضلون كتابة SQL مباشرةً لكنهم يرغبون في الاستفادة من ميزات الأمان من حيث النوع، والاستعلام المنظم، وقابلية نقل قاعدة البيانات. على عكس ORMs التي تُجرد SQL بعيدًا، يحتضن Bun SQL — مما يتيح لك بناء استعلامات معقدة وقابلة للقراءة باستخدام أساليب Go مع الحفاظ على التحكم الكامل في SQL المولَّد. يدعم Bun قواعد بيانات متعددة بما في ذلك PostgreSQL، MySQL/MariaDB، SQLite، Microsoft SQL Server، وOracle، ولكل منها برنامج تشغيل ولهجة خاصة. يمكن مسح الاستعلامات إلى هياكل (structs)، خرائط (maps)، شرائح (slices)، أو قيم قياسية، مما يوفر مرونة في كيفية استهلاك البيانات. تُعرّف العلاقات بين الجداول عبر علامات الهيكل (struct tags)، مما يتيح التحميل المسبق للنماذج المرتبطة مثل has-many أو belongs-to. يتضمن Bun ميزات جاهزة للإنتاج مثل الترحيلات (مع تغييرات مخطط مُصدرة بالإصدار)، والعمليات المجمعة (إدراج/تحديث/حذف)، والحذف اللين، وتكامل OpenTelemetry للرصد. يُدعم التصحيح من خلال تسجيل استعلامات مفصل، ويتم تحسين الأداء بالبناء فوق حزمة `database/sql` القياسية في Go مع overhead ضئيل. توفر المكتبة توثيقًا واسعًا، وأمثلة، وحزمة بدء للاستخدام في الإنتاج. كما تتكامل مع Uptrace، أداة APM مفتوحة المصدر، لتتبع التوزيع والمراقبة. يتوفر دعم المجتمع عبر Discord ومناقشات GitHub. مثالي للفرق التي تسعى لتحقيق توازن بين تعبيرية SQL وراحة ORM، يتجنب Bun السحر بينما يوفر طبقات وصول بيانات قوية وقابلة للصيانة في تطبيقات Go.