بحمد الله، أقدم لكم مكتبتي لإطار عمل Laravel، والتي أسميتها Model Required Fields.
وفائدة المكتبة تكمن في القدرة على جلب الحقول المطلوبة في جدول قاعدة البيانات بسرعة، دون الحقول التي تقبل القيم الفارغة nullables ولا ذات القيم الاقتراضية defaults ولا المفاتيح الأساسية primary index. بحيث عدم إضافة هذه الحقول سيسبب خطأ في ال SQL، مع بعض المرونة التي تسمح في الحصول عليها عند الحاجة.
احتجت في البداية لهذه المعلومة أثناء عملي في مشروع كبير لا يحتوي أي اختبارات tests أو factories، وكان البحث عن الحقول المطلوبة خلال الmigrations مرهقا ومشتتا.
بدأت في إنشاء trait بسيط لهذه المهمة، وكان الأمر سهلا في الإصدارات 10 و11 لـ Laravel، ولكن لاحظات أن المشكلة تواجه من يعمل مع نسخ قديمة من إطار العمل أكثر من غيرهم؛ فعدّلت الكود ليتناسب مع النسخ السابقة وحتى الإصدار 6 لـ Laravel وجعلتها حزمة قابلة للتنزيل لإفادة الغير.
جربت تنزيل المكتبة لكل إصدار من إصدارات Laravel حتى الإصدار السادس، وفي كل إصدار أجرب المتاح من قواعد البيانات SQLite و MySQL وPostgreSQL.
لم يكن Microsoft SQL Server ولا MariaDB متاحا لي في جهازي ولكن كانت بيئة GitHub Actions منقذة في هذه الحالة حيث تفحص نتيجة الاختبارات tests لكل من قواعد البيانات ولكل من إصدارات Laravel مع ما يناسبها من إصدارات PHP حيث مكنتنتي من اكتشاف الأخطاء ومعالجتها مبكرا وحل كثير من الحالات النادرة edge cases.
وأهمية اختبار كل قاعدة بيانات SQL على حدة هو أنني اضطررت لاستخدام أوامر DB::Select مباشرة دون التجربد abstraction الذي توفّرة Eloquent في الإصدارات 11 و10 ولا توفره لمثل هذه الأمور في الإصدارات السابقة، وكل قاعدة بيانات SQL تختلف في طريقتها لجلب هذه البيانات.
وكل ما سبق لا يمكن أن يكون له فائدة لولا استخدام الاختبارات الآلية عن طريق PHPUnit، وهي التي ستتيح لي تحسين الكود refactoring مع الاطمئنان بعدم إحداث خطأ غير متوقع.
أرجو أن تفيدكم هذه المكتبة/الحزمة وسعيد بأي مشاركة أو اقتراح أو تبليغ عن خطأ.
رابط المكتبة في التعليقات حيث ستجدون أمثلة عملية على طريقة استخدامها
التعليقات