diff --git a/src/StorageDrivers/Database/DatabaseStorageDriver.php b/src/StorageDrivers/Database/DatabaseStorageDriver.php index 7e89cb69..b3a1bd9f 100644 --- a/src/StorageDrivers/Database/DatabaseStorageDriver.php +++ b/src/StorageDrivers/Database/DatabaseStorageDriver.php @@ -90,27 +90,31 @@ class DatabaseStorageDriver implements StorageDriver public function updateTenant(Tenant $tenant): void { - Tenants::find($tenant->id)->putMany($tenant->data); + DB::transaction(function () use ($tenant) { + Tenants::find($tenant->id)->putMany($tenant->data); - $original_domains = Domains::where('tenant_id', $tenant->id)->get()->map(function ($model) { - return $model->domain; - })->toArray(); - $deleted_domains = array_diff($original_domains, $tenant->domains); + $original_domains = Domains::where('tenant_id', $tenant->id)->get()->map(function ($model) { + return $model->domain; + })->toArray(); + $deleted_domains = array_diff($original_domains, $tenant->domains); - Domains::whereIn('domain', $deleted_domains)->delete(); + Domains::whereIn('domain', $deleted_domains)->delete(); - foreach ($tenant->domains as $domain) { - Domains::firstOrCreate([ - 'tenant_id' => $tenant->id, - 'domain' => $domain, - ]); - } + foreach ($tenant->domains as $domain) { + Domains::firstOrCreate([ + 'tenant_id' => $tenant->id, + 'domain' => $domain, + ]); + } + }); } public function deleteTenant(Tenant $tenant): void { - Tenants::find($tenant->id)->delete(); - Domains::where('tenant_id', $tenant->id)->delete(); + DB::transacton(function () use ($tenant) { + Tenants::find($tenant->id)->delete(); + Domains::where('tenant_id', $tenant->id)->delete(); + }); } /** diff --git a/src/Tenant.php b/src/Tenant.php index 34a9ae33..efc9ccbc 100644 --- a/src/Tenant.php +++ b/src/Tenant.php @@ -111,13 +111,16 @@ class Tenant implements ArrayAccess return static::new()->withDomains((array) $domains)->withData($data)->save(); } - protected function persisted($persisted = null) + /** + * DO NOT CALL THIS METHOD FROM USERLAND UNLESS YOU KNOW WHAT YOU ARE DOING. + * Set $persisted. + * + * @param bool $persisted + * @return self + */ + public function persisted(bool $persisted): self { - if (gettype($persisted) === 'boolean') { - $this->persisted = $persisted; - - return $this; - } + $this->persisted = $persisted; return $this; }