Laravelshift Blueprint - Cara pantas untuk membangunkan aplikasi laravel

Dengan menggunakan open-source blueprint ini, kita mampu menjimatkan masa sehingga 70% untuk membangunkan aplikasi laravel. Ini kerana blueprint ini mampu untuk menghasilakan rangka(scaffold) Model, Controller, View dan lain-lain dengan pantas.

Perlu diingatkan bahasa blueprint ini dikhaskan untuk Laravel. Berikut adalah cara install
 composer require -W --dev laravel-shift/blueprint  
Kemudian buatkan 1 fail bernama draft.yaml dan berikut adalah contoh format 

models:
  # monday,tuesday,..., sunday
  RefDayOfWeek:
    name: string
    desc: text nullable
    relationships:
      hasMany: OperationHour,CourtPricing
    softDeletes
 
  # holiday,
  RefBookingCategory:
    name: string
    desc: text nullable
    relationships:
      hasMany: Booking
    softDeletes

# day,night
  RefRateType:
    name: string
    desc: text nullable
    relationships:
      hasMany: CourtPricing
    softDeletes

  # new,pending,completed,rejected
  RefBookingStatus:
    name: string
    desc: text nullable
    relationships:
      hasMany: Booking
    softDeletes

  # paid,unpaid,void
  RefInvoiceStatus:
    name: string
    desc: text nullable
    relationships:
      hasMany: Invoice
    softDeletes

  # manual, payment gateway
  RefPaymentMethod:
    name: string
    desc: text nullable
    relationships:
      hasMany: Payment
    softDeletes

  # pending,paid,failed,reject
  RefPaymentStatus:
    name: string
    desc: text nullable
    meta: json nullable
    relationships:
      hasMany: Payment
    softDeletes

  User:
    name: string
    email: string unique
    password: string
    softDeletes
    relationships:
      hasMany: Booking, Cart

  Court:
    name: string
    desc: text nullable
    rate: decimal(10,2)
    min_booking_hours: integer
    max_booking_hours: integer
    min_days_advance_booking: integer
    max_days_advance_booking: integer
    softDeletes
    relationships:
      hasMany: Booking, CourtPricing, OperationHour, CourtHoliday
 
  # every courd have own hour
  OperationHour:
    court_id: id foreign:courts.id
    ref_day_of_week_id: id foreign:ref_day_of_week.id
    open_time: time
    close_time: time
    desc: text nullable
    softDeletes
    relationships:
      belongsTo: Court, RefDayOfWeek

  # pricing base on RefRateType (day/night timing duration)
  CourtPricing:
    court_id: id foreign:courts.id
    ref_rate_type_id: id foreign:ref_rate_types.id
    ref_day_of_week_id: id foreign:ref_day_of_week.id
    start_time: time
    end_time: time
    rate: decimal(10,2)
    desc: text nullable
    softDeletes
    relationships:
      belongsTo: Court, RefRateType, RefDayOfWeek

  Cart:
    user_id: id foreign:users.id
    desc: text nullable
    metadata: string nullable
    softDeletes
    relationships:
      belongsTo: User
      hasMany: CartItem

  CartItem:
    cart_id: id foreign:carts.id
    court_id: id foreign:courts.id
    starts_at: datetime
    ends_at: datetime
    rate: decimal(10,2)
    amount: decimal(10,2)
    desc: text nullable
    softDeletes
    relationships:
      belongsTo: Cart, Court

  Booking:
    user_id: id foreign:users.id
    ref_booking_category_id: id foreign:ref_booking_categories.id
    total_amount: decimal(10,2)
    ref_booking_status_id: id foreign:ref_booking_statuses.id
    desc: text nullable
    metadata: string nullable
    softDeletes
    relationships:
      belongsTo: User, RefBookingStatus,RefBookingCategory
      hasMany: BookingDetail, Invoice

  BookingDetail:
    booking_id: id foreign:bookings.id
    court_id: id foreign:courts.id
    starts_at: datetime
    ends_at: datetime
    rate: decimal(10,2)
    amount: decimal(10,2)
    desc: text nullable
    softDeletes
    relationships:
      belongsTo: Booking, Court

  Invoice:
    booking_id: id foreign:bookings.id
    invoice_number: string
    amount: decimal(10,2)
    ref_invoice_status_id: id foreign:ref_invoice_statuses.id
    desc: text nullable
    softDeletes
    relationships:
      belongsTo: Booking, RefInvoiceStatus
      hasOne: Payment

  Payment:
    invoice_id: id foreign:invoices.id
    ref_payment_method_id: id foreign:ref_payment_methods.id
    amount: decimal(10,2)
    payment_date: timestamp
    ref_payment_status_id: id foreign:ref_payment_statuses.id
    desc: text nullable
    softDeletes
    relationships:
      belongsTo: Invoice, RefPaymentMethod, RefPaymentStatus

seeders: User, Court, OperationHour, ... & berikutnya

ini adalah contoh syntax untuk menghasilkan migration & model bagi sistem tempahan berserta relation yang berkenaan.
Untuk maklumat lanjut, anda boleh layarai dokumentasi rasmi mereka di https://blueprint.laravelshift.com/docs/generating-components/

Post a Comment

Previous Post Next Post