D
Engineering

devices

Skema koleksi devices — koneksi WhatsApp, field non-standard (iduser, tgl_expired, idpaket), SoftDeletes.

Device WhatsApp per user store. Field naming non-standard (legacy). Satu device = satu koneksi WhatsApp.

Definisi model

app/Models/Device.php

PropertiNilaiSumber
Collectiondevices (default konvensi)
$guarded[]Device.php:15
SoftDeletesDevice.php:13
Casts❌ (tidak ada)
Primary keyUUID stringDevice.php:16-17,19-25

Field

FieldTipeDefaultSumber
idstring UUIDgeneratedDevice.php:23
senderstringDeviceController.php:275,280
store_idstring:281 (scope tenant)
iduserstring<user.id>:282
tgl_expiredstring"":283
idpaketinteger2:284
tokenstring (50 char acak)generated:285
domainstring'v1':286
statusinteger1:287
tanggalstring (Y-m-d H:i:s)now:288
setdefaultinteger0:289
setsenderinteger0:290
versistring'enabled':291
webhookstring"-":292
betainteger1:293
delay_timeinteger5:294
new_deviceinteger0:295
agent_idstring/null:296,426,461
last_connected_atstring (Y-m-d H:i:s)now:297,193,893
portstring (3-digit)generated:302,309
last_status_connectedstring:192,198,892,898 ('Connected'/'Disconnected')
no_wastring"":196,706,715,821,896
last_number_connectedstring:822
is_connectedstring:204 (response string di list())
deleted_atdatetimeSoftDeletes
created_atdatetimeauto
updated_atdatetimeauto

Relasi

NamaTipeFKSumber
user_storehasOneUserStore.iduser_store_idDevice.php:27-29
agentbelongsToAgent.idagent_id:31-35

Index & constraint

  • Tidak ada index di model
  • Field port di-generate unik via generatePortDevice() (DeviceController.php:337-388) dengan cek Device::pluck('port')bukan DB constraint, hanya pengecekan aplikasi
  • Primary key: UUID string

Contoh dokumen

json
{
  "_id": ObjectId("..."),
  "id": "uuid-device",
  "sender": "Toko Official",
  "store_id": "<store.id>",
  "iduser": "<user.id>",
  "tgl_expired": "",
  "idpaket": 2,
  "token": "abc123...50char",
  "domain": "v1",
  "status": 1,
  "tanggal": "2026-01-05 12:00:00",
  "setdefault": 0,
  "setsender": 0,
  "versi": "enabled",
  "webhook": "-",
  "beta": 1,
  "delay_time": 5,
  "new_device": 0,
  "agent_id": null,
  "last_connected_at": "2026-01-05 12:00:00",
  "port": "123",
  "last_status_connected": "Disconnected",
  "no_wa": "",
  "created_at": ISODate("..."),
  "updated_at": ISODate("...")
}

DeviceService

app/Services/DeviceService.php hanya berisi HTTP client curl ke engine WhatsApp (deviceInfo()) — tidak menulis ke DB, hanya read.

Referensi

  • External Services — URL engine WhatsApp
  • Perangkat Module — fitur dari sisi user
  • app/Models/Device.php — model
  • app/Http/Controllers/DeviceController.php — controller
  • app/Services/DeviceService.php — HTTP client ke engine WA