D
Engineering

Database

Koneksi database Admin Dazo — MongoDB utama, MongoDB covendor, MongoDB CRM, dan MySQL live chat.

Koneksi

KoneksiDriverDatabaseKegunaan
mongodb (default)MongoDBdazoData utama — admins, users, stores, packages, invoices, wallets, devices, coupons, tickets, registration links, platform settings
mongodb_covendorMongoDBcovendor_devData co-vendor reseller
crmMongoDBcrmCRM addon workspaces dan users
mysqlMySQLdazoData live chat (chat_inbox, chat_list) — dibaca langsung dari engine WhatsApp

Model

47 model di app/Models/, semuanya menggunakan MongoDB kecuali yang eksplisit pakai koneksi lain.

Model dengan Koneksi Non-Default

ModelKoneksiCollection
Covendormongodb_covendorcovendors
CovendorUsermongodb_covendorcovendor_users
CovendorOrderInvoicemongodb_covendorcovendor_order_invoices
CovendorOrderPaymentmongodb_covendorcovendor_order_payments
CovendorIncomemongodb_covendorcovendor_incomes
CovendorMemberUsermongodb_covendorcovendor_member_users
CrmWorkspacecrmworkspaces
CrmUsercrmusers
CrmUserWorkspacecrmuser_workspaces

Model Utama

ModelCollectionDeskripsi
AdminadminsAdmin panel user (auth)
UserusersStore owner (dazoapp user)
StorestoresToko digital
PackagepackagesPaket subscription
AddonaddonsAddon (CRM, dll)
AddonInvoiceaddon_invoicesInvoice addon
AddonStoreaddon_storesRelasi addon-store
SubscriptionInvoicesubscription_invoicesInvoice subscription
SubscriptionPaymentsubscription_paymentsPembayaran subscription
WalletwalletsWallet toko
WalletTransactionwallet_transactionsTransaksi wallet (withdraw, dll)
DevicedevicesPerangkat WhatsApp
AdminDeviceadmin_devicesDevice admin
CouponcouponsKode diskon
RegistrationLinkregistration_linksLink pendaftaran
RegistrationLinkUsageregistration_link_usagesTracking penggunaan link
TicketingFeedbackticketing_feedbacksSupport ticket
PlatformSettingplatform_settingsSingleton settings (withdraw fee, fee collector)
CustomercustomersCustomer/store contact
Contactadmin_contactsKontak admin
TagtagsTag kontak
OrderordersOrder toko
ProductproductsProduk toko
ChatListchat_listsChat list (MongoDB)
Chatinboxchat_inboxChat inbox
ChatListCustomerchat_list_customersChat list per customer
AgentagentsAgent/CS
BankbanksBank account
BroadcastMessagebroadcast_messagesBroadcast
BroadcastSchedulerbroadcast_schedulersBroadcast scheduler
LoginLoglogin_logsLog login user
DigitalStorePagesdigital_store_pagesHalaman toko digital
WarehousewarehousesGudang
ProvinceprovincesProvinsi (RajaOngkir)
CitycitiesKota (RajaOngkir)
SubdistrictsubdistrictsKecamatan (RajaOngkir)
UserStoreuser_storesPivot user-store
PersonalAccessTokenpersonal_access_tokensSanctum token (MongoDB)

Primary Key

Semua model menggunakan UUID string sebagai primary key:

php
protected $keyType = 'string';

protected static function boot()
{
    parent::boot();
    static::creating(function ($model) {
        $model->id = (string) Str::uuid();
    });
}

Migration

Hanya ada 6 migration legacy Laravel (vestigial) — users, sessions, personal_access_tokens, dll. Schema sebenarnya adalah schemaless MongoDB — struktur dokumen didefinisikan oleh controller yang menulisnya.

Tanggal sebagai String

Beberapa field tanggal disimpan sebagai string (bukan DateTime):

  • expired_at di Store → format 'Y-m-d H:i'
  • Perbandingan dilakukan secara lexicographic (string comparison)

Ini bekerja tapi brittle dan tidak index-friendly.