D
Engineering

stores

Schema collection stores — toko digital dengan features, plan, dan expiry.

Collection: stores

Menyimpan data toko digital — features yang aktif, paket subscription, dan expiry.

Struktur Dokumen

json
{
  "_id": "uuid-string",
  "name": "Toko ABC",
  "username": "tokoabc",
  "email": "owner@tokoabc.com",
  "phone": "+6281234567890",
  "plan": "Premium",
  "addon_plan": ["CRM"],
  "features": ["product", "order", "wallet", "broadcast", "crm"],
  "status": "active",
  "expired_at": "2026-07-25 14:30",
  "invoice_id": "uuid-string",
  "registration_source": {
    "type": "partner",
    "partner_id": "uuid-string"
  },
  "created_at": "2026-01-01T00:00:00.000000Z",
  "updated_at": "2026-06-25T14:30:00.000000Z"
}

Field

FieldTypeDeskripsi
_idstring (UUID)Primary key
namestringNama toko
usernamestringUsername unik
emailstringEmail owner
phonestringNomor telepon
planstringNama paket subscription
addon_planarrayDaftar addon aktif
featuresarrayFitur yang bisa diakses
statusstringStatus: active, inactive, suspended
expired_atstringWaktu expiry ('Y-m-d H:i' format)
invoice_idstringInvoice terakhir
registration_sourceobjectSumber registrasi
registration_source.typestringTipe: direct, partner, affiliate, promo, trial
registration_source.partner_idstringID partner/covendor

Features

Fitur yang tersedia (dari Package.features + Addon.features):

FeatureDeskripsi
productManajemen produk
orderManajemen order
walletWallet & withdraw
broadcastBroadcast message
crmCRM addon
live_chatLive chat
ai_agentAI agent
team_chatTeam chat
shippingShipping integration
reportLaporan

Relasi

RelasiTypeKe
user_storehasOneuser_stores via store_id
subscriptionshasManysubscription_invoices via store_id
latestSubscriptionhasOnesubscription_invoices (latest)
wallethasOnewallets via store_id

Query Umum

javascript
// Store aktif
db.stores.find({ status: "active" })

// Store expired
db.stores.find({ expired_at: { $lt: "2026-06-25 23:59" } })

// Store by plan
db.stores.find({ plan: "Premium" })

// Store dengan feature CRM
db.stores.find({ features: "crm" })