Skip to content

أوامر التوليد

تُنشئ أوامر التوليد ملفات جديدة من قوالب Tera الخاصة بـ FORGE. كل مولّد يُنشئ كوداً مُهيكلاً ومتصلاً بشكل صحيح — نماذج، ترحيلات، معالجات، صفحات، ومكونات — لتقضي وقتاً أقل على الكود المتكرر.

forge make:model

توليد struct نموذج جديد مع ملفات مرتبطة اختيارية. يمكنك تعريف الحقول مباشرة لتوليد ترحيلات مُنوّعة بالكامل، وـ structs Rust، وـ DTOs، ونماذج الإدارة في خطوة واحدة.

الاستخدام

bash
forge make:model <NAME> [FIELDS...] [OPTIONS]

FIELDS... هي وسائط موضعية اختيارية باستخدام صيغة name:type. راجع مرجع أنواع الحقول لجميع الأنواع المدعومة.

الخيارات

الخيارالنوعالافتراضيالوصف
--migration, -mflagfalseتوليد ترحيل قاعدة بيانات أيضاً.
--all, -aflagfalseتوليد الترحيل والمعالج وصفحات CRUD الإدارية — حزمة الموارد الكاملة.
--translatableflagfalseإضافة دعم الترجمة مع جدول _translations وتنفيذ سمة Translatable.
--interactive, -iflagfalseتشغيل منشئ حقول تفاعلي يطلب اسم ونوع كل حقل.

أمثلة

نموذج فقط (بدون حقول):

bash
forge make:model Category

نموذج مع حقول مباشرة وترحيل:

bash
forge make:model Product -m title:string price:decimal is_active:boolean

حزمة موارد كاملة مع حقول:

bash
forge make:model Product --all title:string price:decimal status:lookup category:belongs_to

هذا يُولّد النموذج والترحيل (مع الأعمدة) والمعالج وصفحات CRUD الإدارية — كلها متصلة بتعريفات الحقول التي حددتها.

نموذج قابل للترجمة:

bash
forge make:model Article --all --translatable title:string body:text

منشئ الحقول التفاعلي:

bash
forge make:model Product --all --interactive

الوضع التفاعلي يطلب منك كل حقل واحداً تلو الآخر:

منشئ الحقول التفاعلي (أدخل اسماً فارغاً للإنهاء)
الأنواع المتاحة: string, text, integer, bigint, decimal, boolean,
                 date, datetime, uuid, json, lookup, belongs_to

  اسم الحقل (أو اضغط Enter للإنهاء): title
  نوع الحقل لـ 'title': string
  ✓ تمت الإضافة: title → string (SQL: VARCHAR(255))

  اسم الحقل (أو اضغط Enter للإنهاء): price
  نوع الحقل لـ 'price': decimal
  ✓ تمت الإضافة: price → decimal (SQL: DECIMAL(10,2))

  اسم الحقل (أو اضغط Enter للإنهاء):
إجمالي الحقول: 2

نصيحة

--all هو الخيار الموصى به للكيانات الجديدة. يُولّد الحزمة الكاملة — النموذج والترحيل والمعالج وصفحات CRUD الإدارية — في خطوة واحدة، مما يحافظ على اتساق قاعدة الكود.


forge make:migration

توليد ملف ترحيل SQL جديد. مثل make:model، يمكنك تمرير تعريفات حقول مباشرة لتوليد ترحيل بأعمدة مُنوّعة.

الاستخدام

bash
forge make:migration <NAME> [FIELDS...] [OPTIONS]

الخيارات

الخيارالنوعالافتراضيالوصف
--createstringتوليد ترحيل CREATE TABLE لاسم الجدول المُعطى.
--tablestringتوليد ترحيل ALTER TABLE لاسم الجدول المُعطى.

أمثلة

bash
# Create a new table (no fields — empty migration body)
forge make:migration create_categories_table --create=categories

# Create table with typed columns
forge make:migration create_products_table title:string price:decimal is_active:boolean

# Add a foreign key column
forge make:migration add_category_to_products category:belongs_to

# Modify an existing table
forge make:migration add_slug_to_products --table=products

الملفات المُولّدة تتبع اتفاقية التسمية المُرقّمة:

migrations/
  00018_create_categories_table.sql

مرجع أنواع الحقول

عند تمرير FIELDS... إلى make:model أو make:migration، كل حقل يستخدم صيغة name:type. يُربط FORGE كل نوع بعمود SQL الصحيح ونوع Rust ونوع TypeScript ومكون النموذج الإداري.

الأنواع المدعومة

النوععمود SQLنوع Rustنوع TSمكون النموذجمثال
stringVARCHAR(255)StringstringInputtitle:string
textTEXTStringstringTextareabody:text
integerINTEGERi32numberInput (number)quantity:integer
bigintBIGINTi64numberInput (number)views:bigint
decimalDECIMAL(10,2)BigDecimalnumberInput (number)price:decimal
booleanBOOLEANboolbooleanSwitchis_active:boolean
dateDATENaiveDatestringInput (date)birth_date:date
datetimeTIMESTAMPTZDateTime<Utc>stringInput (datetime)published_at:datetime
uuidUUIDUuidstringInputexternal_id:uuid
jsonJSONBserde_json::ValueRecord<string, unknown>Textareametadata:json
lookupUUID (FK → lookups)UuidstringSelectstatus:lookup
belongs_toUUID (FK → الجدول المرتبط)UuidstringSelectuser:belongs_to

الأسماء البديلة للأنواع

عدة أسماء بديلة مقبولة للراحة:

البديليُحوّل إلى
str, varcharstring
longtexttext
int, i32integer
big_int, i64bigint
float, double, moneydecimal
boolboolean
timestamp, timestamptzdatetime
jsonbjson
belongsto, relation, fkbelongs_to

أنواع خاصة: Lookup و BelongsTo

Lookupstatus:lookup

يُنشئ مفتاحاً أجنبياً إلى جدول lookups، باستخدام اسم الحقل كـ slug الأب. يصبح العمود status_id ونموذج الإدارة يعرض <Select> مملوء من قيم lookup لـ slug "status".

BelongsTouser:belongs_to

يُنشئ مفتاحاً أجنبياً إلى جدول النموذج المرتبط (مُشتق من اسم الحقل). user:belongs_to يُنتج عمود user_id يُشير إلى جدول users، ونموذج الإدارة يعرض <Select> مملوء من ذلك الجدول.


forge make:seeder

توليد ملف بذرة قاعدة بيانات جديد.

الاستخدام

bash
forge make:seeder <NAME>

مثال

bash
forge make:seeder categories

يُنشئ:

seeders/
  08_categories.sql

forge make:handler

توليد دوال معالج HTTP لمورد.

الاستخدام

bash
forge make:handler <NAME> [OPTIONS]

الخيارات

الخيارالنوعالافتراضيالوصف
--apiflagfalseتوليد معالجات API فقط (بدون مسارات لوحة الإدارة).
--onlystringقائمة إجراءات مفصولة بفواصل للتوليد: index, show, create, update, delete.

أمثلة

bash
# Full CRUD handler set
forge make:handler Product

# API only, limited to index and show
forge make:handler Product --api --only=index,show

forge make:middleware

توليد middleware Axum جديد.

الاستخدام

bash
forge make:middleware <NAME>

مثال

bash
forge make:middleware rate_limit

يُنشئ:

src/middleware/
  rate_limit.rs

الملف المُولّد يتضمن توقيع دالة middleware، ومستخرج طلب، ومكان لمنطقك.


forge make:page

توليد صفحة Next.js (أو مجموعة صفحات CRUD كاملة) لتطبيق web أو admin.

الاستخدام

bash
forge make:page <NAME> [OPTIONS]

الخيارات

الخيارالنوعالافتراضيالوصف
--appstringwebالتطبيق الهدف: web أو admin.
--crudflagfalseتوليد مجموعة صفحات CRUD كاملة: قائمة، إنشاء، تعديل، وعرض.

أمثلة

bash
# Single web page
forge make:page about --app=web

# Admin CRUD pages
forge make:page Product --app=admin --crud

عند استخدام --crud مع --app=admin، تُنشأ الصفحات التالية:

admin/app/(dashboard)/products/
  page.tsx          # List view with data table
  create/page.tsx   # Create form
  [id]/page.tsx     # Detail view
  [id]/edit/page.tsx # Edit form

forge make:component

توليد مكون React.

الاستخدام

bash
forge make:component <NAME> [OPTIONS]

الخيارات

الخيارالنوعالافتراضيالوصف
--appstringwebالتطبيق الهدف: web أو admin.
--sharedflagfalseوضع المكون في مجلد مشترك يمكن الوصول إليه من كلا التطبيقين.

أمثلة

bash
# Web-specific component
forge make:component hero-banner --app=web

# Shared component
forge make:component data-table --shared

مثال سير عمل كامل

المثال التالي يُظهر سير عمل ميزة نموذجي باستخدام المولّدات. بدءاً من أمر واحد بحقول مباشرة، يُنشئ FORGE كل ملف مطلوب لمورد Product يعمل بالكامل.

bash
# 1. Generate full resource bundle with fields
forge make:model Product --all --translatable \
  title:string price:decimal sku:string \
  is_active:boolean status:lookup category:belongs_to

هذا يُنشئ:

api/src/models/product.rs          # Model struct with typed fields + Translatable trait
api/src/dto/product.rs             # Request/response DTOs
api/src/handlers/admin/products.rs # Admin CRUD handlers
api/src/services/product.rs        # Business logic service
migrations/00018_create_products_table.sql   # With columns for each field
migrations/00019_create_product_translations_table.sql
seeders/08_products.sql
admin/app/(dashboard)/products/page.tsx          # List page
admin/app/(dashboard)/products/create/page.tsx   # Create form with inputs
admin/app/(dashboard)/products/[id]/edit/page.tsx # Edit form

الترحيل يتضمن أعمدة مُنوّعة ومفاتيح أجنبية وقيم افتراضية — كلها مُشتقة من تعريفات الحقول:

sql
CREATE TABLE products (
    id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
    title VARCHAR(255) NOT NULL,
    price DECIMAL(10,2) NOT NULL,
    sku VARCHAR(255) NOT NULL,
    is_active BOOLEAN NOT NULL DEFAULT false,
    status_id UUID REFERENCES lookups(id),
    category_id UUID REFERENCES categories(id),
    created_at TIMESTAMPTZ NOT NULL DEFAULT now(),
    updated_at TIMESTAMPTZ NOT NULL DEFAULT now()
);
bash
# 2. Run migrations
forge migrate:run
bash
# 3. Seed initial data
forge seed --class products
bash
# 4. Start development
forge serve

نصيحة

اجمع المولّدات مع أوامر قاعدة البيانات وأوامر التطوير للانتقال من الفكرة إلى ميزة عاملة في أقل من دقيقة.


انظر أيضاً

Released under the MIT License.