D
Engineering

user_stores

Skema koleksi user_stores — pivot multi-tenant, role per store, default_device. SoftDeletes.

Pivot multi-tenant. Satu user bisa punya multiple UserStore (per store). Bukan pivot Eloquent biasa — model standalone.

Definisi model

app/Models/UserStore.php

PropertiNilaiSumber
Collectionuser_stores (default konvensi)—
$guarded[]UserStore.php:15
SoftDeletes✅UserStore.php:13
Casts❌ (tidak ada)—
Primary keyUUID stringUserStore.php:16-17,19-25

Field

FieldTipeDefaultSumber
idstring UUIDgeneratedUserStore.php:23
store_idstring—AuthService.php:130, TeamController.php:326
user_idstring—AuthService.php:131, TeamController.php:327
is_ownerboolean—AuthService.php:132, TeamController.php:328 (false)
rolestring—AuthService.php:133 ('Owner', 'Admin', 'Gudang', dll)
admin_idstring/null—TeamController.php:330,486
default_devicestring/null''DeviceController.php:316,670
deleted_atdatetime—SoftDeletes
created_atdatetimeauto—
updated_atdatetimeauto—

Relasi

NamaTipeFKSumber
storebelongsToStore.id ← store_idUserStore.php:27-29
userbelongsToUser.id ← user_id:31-33
warehouseshasManyWarehouse.store_id ← store_id:35-37
tagshasMany (withTrashed)Tag.store_id ← store_id:39-45

Index & constraint

  • Tidak ada index di model
  • Validation Rule::unique('user_stores')->where(...) ada di BiolinkController.php:466 — validasi request, bukan DB constraint
  • Primary key: UUID string

Contoh dokumen

json
{
  "_id": ObjectId("..."),
  "id": "uuid-userstore",
  "store_id": "<store.id>",
  "user_id": "<user.id>",
  "is_owner": true,
  "role": "Owner",
  "admin_id": null,
  "default_device": "",
  "created_at": ISODate("..."),
  "updated_at": ISODate("...")
}

Catatan penting

Referensi

  • Multi-tenant — scope store_id & UserStore pivot
  • app/Models/UserStore.php — model
  • app/Services/AuthService.php — create saat register
  • app/Http/Controllers/TeamController.php — manage team member