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
SoftDeletesUserStore.php:13
Casts❌ (tidak ada)
Primary keyUUID stringUserStore.php:16-17,19-25

Field

FieldTipeDefaultSumber
idstring UUIDgeneratedUserStore.php:23
store_idstringAuthService.php:130, TeamController.php:326
user_idstringAuthService.php:131, TeamController.php:327
is_ownerbooleanAuthService.php:132, TeamController.php:328 (false)
rolestringAuthService.php:133 ('Owner', 'Admin', 'Gudang', dll)
admin_idstring/nullTeamController.php:330,486
default_devicestring/null''DeviceController.php:316,670
deleted_atdatetimeSoftDeletes
created_atdatetimeauto
updated_atdatetimeauto

Relasi

NamaTipeFKSumber
storebelongsToStore.idstore_idUserStore.php:27-29
userbelongsToUser.iduser_id:31-33
warehouseshasManyWarehouse.store_idstore_id:35-37
tagshasMany (withTrashed)Tag.store_idstore_id:39-45

Index & constraint

  • Tidak ada index di model
  • Validation Rule::unique('user_stores')->where(...) ada di BiolinkController.php:466validasi 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