Konco memakai PostgreSQL (web app) dan MySQL/MariaDB (API engine). Semua primary key UUID string via trait App\Traits\UUID. 55+ model dikategorikan: Order, AdsAccount, Stock, Ticket, Transfer, Fee, Coupon, Notification.
Konco memakai dua database terpisah — PostgreSQL untuk dazo-whitelist (web app, default pgsql) dan MySQL/MariaDB untuk dazo-whitelist-api (engine). Seluruh tabel utama memakai UUID string sebagai primary key via trait App\Traits\UUID.
Koneksi database
Repo
Default driver
DB
dazo-whitelist
pgsql (PostgreSQL)
konco_db (default)
dazo-whitelist-api
mysql (MySQL/MariaDB)
konco_api_db
Primary key: UUID
Semua model utama memakai UUIDv4 string. Trait App\Traits\UUID (app/Traits/UUID.php) otomatis generate UUID saat creating event:
php
trait UUID{ protected static function boot() { parent::boot(); static::creating(function ($model) { if ($model->getKey() === null) { $model->setAttribute($model->getKeyName(), Str::uuid()->toString()); } }); } public function getIncrementing() { return false; } public function getKeyType() { return 'string'; }}
Di migration, primary key didefinisikan sebagai:
php
$table->uuid('id')->primary();
Trait wajib model
Trait
Lokasi
Fungsi
App\Traits\UUID
app/Traits/UUID.php
Generate UUIDv4 primary key, set $keyType='string', $incrementing=false
App\Traits\WithAuthor
app/Traits/WithAuthor.php
Auto-isi created_by / updated_by dari Auth::id() saat saving event
App\Traits\DateTimeTrait
app/Traits/DateTimeTrait.php
Utility date/time formatting
Contoh model baru:
php
use App\Traits\UUID;use App\Traits\WithAuthor;class YourModel extends Model{ use UUID, WithAuthor; protected $keyType = 'string'; public $incrementing = false;}
Model dazo-whitelist (55+)
Dikategorikan berdasarkan domain:
Order & Payment
Model
Catatan
Order
Master order — polymorphic ke OrderSubscribe, OrderTopup, OrderWithdraw, OrderTransferBalance, OrderDeduct, OrderPayment, OrderBusinessManager
OrderSubscribe
Order sewa akun
OrderTopup
Order top up spend cap
OrderWithdraw
Order penarikan saldo
OrderTransferBalance + OrderTransferBalanceDetail
Order transfer saldo antar-akun
OrderDeduct
Order biaya admin/fee
OrderPayment
Order pembayaran
OrderBusinessManager
Order BM
Payment
Record pembayaran
PaymentMethod
Master metode pembayaran
Refund
Record refund
BankAccount
Master rekening bank
Ads & Stock
Model
Catatan
AdsAccount
Akun iklan member — konstanta EXPIRED_BEFORE=7, EXPIRED_AFTER=4
User gabungan (admin + member) — guard dibedakan via role
Member
Profil member
Team
Tim member
Role / Permission
Spatie RBAC
UserAuthenticator
Google 2FA secret per user
Notification
Notifikasi in-app
NotificationSetting
Preferensi notifikasi per user
System
Model
Catatan
Config
Key-value store — termasuk api_token Passport client
Application
Aplikasi klien Passport (id, secret, public_key)
WebhookLog
Audit trail webhook payment gateway
ImportJob
Progress import massal BM/Ad Accounts
News
Pengumuman sistem
Subscribe
Master paket subscription
Model dazo-whitelist-api (16)
Model
Catatan
Application
Aplikasi klien Passport — verify RSA signature
User
User admin API engine
UserFacebookToken
Long-lived token Facebook + needs_reauth flag
StockBm
Stok BM
StockAdsAccount
Stok akun iklan
AdsAccount
Akun iklan aktif
AdsAccountFunding
Funding history
MemberBm
BM member
TransferBalance / TransferBalanceDetail
Transfer saldo
ImportJob
Progress import massal
AdminRequest / AdminRequestItem
Mirror request dari web app
Order
Mirror order
FacebookAdAccount
Cache ad account dari Meta
Jobs
Model untuk tabel jobs queue worker
Migration vs seeder
dazo-whitelist memakai migration standar Laravel untuk schema (database/migrations/). Tidak seperti dazoapp yang memakai MongoDB + seeder, Konco memakai PostgreSQL relasional — migration adalah sumber kebenaran schema.