Koneksi
| Koneksi | Driver | Database | Kegunaan |
|---|---|---|---|
mongodb (default) | MongoDB | dazo | Data utama — admins, users, stores, packages, invoices, wallets, devices, coupons, tickets, registration links, platform settings |
mongodb_covendor | MongoDB | covendor_dev | Data co-vendor reseller |
crm | MongoDB | crm | CRM addon workspaces dan users |
mysql | MySQL | dazo | Data 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
| Model | Koneksi | Collection |
|---|---|---|
Covendor | mongodb_covendor | covendors |
CovendorUser | mongodb_covendor | covendor_users |
CovendorOrderInvoice | mongodb_covendor | covendor_order_invoices |
CovendorOrderPayment | mongodb_covendor | covendor_order_payments |
CovendorIncome | mongodb_covendor | covendor_incomes |
CovendorMemberUser | mongodb_covendor | covendor_member_users |
CrmWorkspace | crm | workspaces |
CrmUser | crm | users |
CrmUserWorkspace | crm | user_workspaces |
Model Utama
| Model | Collection | Deskripsi |
|---|---|---|
Admin | admins | Admin panel user (auth) |
User | users | Store owner (dazoapp user) |
Store | stores | Toko digital |
Package | packages | Paket subscription |
Addon | addons | Addon (CRM, dll) |
AddonInvoice | addon_invoices | Invoice addon |
AddonStore | addon_stores | Relasi addon-store |
SubscriptionInvoice | subscription_invoices | Invoice subscription |
SubscriptionPayment | subscription_payments | Pembayaran subscription |
Wallet | wallets | Wallet toko |
WalletTransaction | wallet_transactions | Transaksi wallet (withdraw, dll) |
Device | devices | Perangkat WhatsApp |
AdminDevice | admin_devices | Device admin |
Coupon | coupons | Kode diskon |
RegistrationLink | registration_links | Link pendaftaran |
RegistrationLinkUsage | registration_link_usages | Tracking penggunaan link |
TicketingFeedback | ticketing_feedbacks | Support ticket |
PlatformSetting | platform_settings | Singleton settings (withdraw fee, fee collector) |
Customer | customers | Customer/store contact |
Contact | admin_contacts | Kontak admin |
Tag | tags | Tag kontak |
Order | orders | Order toko |
Product | products | Produk toko |
ChatList | chat_lists | Chat list (MongoDB) |
Chatinbox | chat_inbox | Chat inbox |
ChatListCustomer | chat_list_customers | Chat list per customer |
Agent | agents | Agent/CS |
Bank | banks | Bank account |
BroadcastMessage | broadcast_messages | Broadcast |
BroadcastScheduler | broadcast_schedulers | Broadcast scheduler |
LoginLog | login_logs | Log login user |
DigitalStorePages | digital_store_pages | Halaman toko digital |
Warehouse | warehouses | Gudang |
Province | provinces | Provinsi (RajaOngkir) |
City | cities | Kota (RajaOngkir) |
Subdistrict | subdistricts | Kecamatan (RajaOngkir) |
UserStore | user_stores | Pivot user-store |
PersonalAccessToken | personal_access_tokens | Sanctum token (MongoDB) |
Primary Key
Semua model menggunakan UUID string sebagai primary key:
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_atdiStore→ format'Y-m-d H:i'- Perbandingan dilakukan secara lexicographic (string comparison)
Ini bekerja tapi brittle dan tidak index-friendly.