/mojo-land

Mojo Land , mini strapi in fresh deno

Primary LanguageTypeScript

نظرة فنية عامة على Mojo Land

المقدمة

Mojo Land هو إطار عمل مرن لبناء واجهات برمجة التطبيقات (APIs) بشكل ديناميكي. يتميز بقدرته على التعامل مع نقاط النهاية (endpoints) بشكل مرن، وإمكانيات متقدمة للترشيح والفلترة، وإدارة ذكية للبيانات.

الوظائف الرئيسية

1. إدارة نقاط النهاية (Endpoints)

  • يتم تعريف نقاط النهاية بشكل ديناميكي في قاعدة البيانات.
  • كل نقطة نهاية لها خصائص مثل الطريقة (method)، الجدول (table)، والأعمدة (columns).

2. الترشيح والفلترة

  • يدعم النظام مجموعة واسعة من عمليات الترشيح مثل:
    • المساواة (eq)
    • أكبر من (gt)
    • أصغر من (lt)
    • يشبه (like)
    • في (in)
    • وغيرها
  • يمكن تحديد الفلاتر المسموح بها لكل نقطة نهاية.

3. إدارة الأعمدة

  • يتم تحديد الأعمدة المسموح بقراءتها أو كتابتها لكل نقطة نهاية.
  • يتم التحقق من الأعمدة المرسلة في طلب الإنشاء أو التحديث للتأكد من أنها مسموح بها.

4. الصلاحيات والأمان

  • يدعم النظام التحقق من الصلاحيات بناءً على أدوار المستخدمين.
  • يمكن تحديد الصلاحيات لكل طريقة (GET, POST, PUT, DELETE) بشكل منفصل.

5. الوظائف الديناميكية

  • يدعم النظام تنفيذ وظائف مخصصة محددة لكل نقطة نهاية.
  • يمكن كتابة هذه الوظائف كنصوص برمجية وتخزينها في قاعدة البيانات.

6. التسجيل (Logging)

  • يوفر النظام إمكانية تسجيل الأحداث والأخطاء.

7. دعم العمليات الأساسية (CRUD)

  • يدعم النظام عمليات الإنشاء والقراءة والتحديث والحذف بشكل مباشر.

التقنيات المستخدمة

  • لغة البرمجة: TypeScript/JavaScript
  • بيئة التشغيل: Deno
  • قاعدة البيانات: Supabase (PostgreSQL)
  • إطار العمل الويب: Hono

كيفية الاستخدام

  1. تعريف نقطة نهاية جديدة:

    • أضف سجل جديد في جدول mojos مع تحديد الخصائص المطلوبة.
  2. استخدام نقطة النهاية:

    • قم بإرسال طلب HTTP إلى النقطة المحددة مع توفير رمز الوصول (token) المناسب.
  3. تخصيص السلوك:

    • يمكن تخصيص سلوك كل نقطة نهاية عن طريق تعديل خصائصها في قاعدة البيانات.

الخاتمة

Mojo Land يوفر نظامًا قويًا ومرنًا لبناء واجهات برمجة تطبيقات ديناميكية. من خلال استخدام قاعدة بيانات لتخزين تعريفات نقاط النهاية، يمكن تغيير سلوك API بسهولة دون الحاجة إلى إعادة نشر الكود.

deno run --allow-net --allow-env  main.ts