1
0
Fork 0
mirror of https://github.com/archtechx/tenancy.git synced 2025-12-13 14:54:03 +00:00

Compare commits

..

No commits in common. "cf01ce92bd5cfb39f3c5fe849fc0371dc8737659" and "53c7d4988c94e30aca821039a9e2c1a9ae876ad9" have entirely different histories.

2 changed files with 8 additions and 3 deletions

View file

@ -5,6 +5,7 @@ declare(strict_types=1);
namespace Stancl\Tenancy\ResourceSyncing\Listeners; namespace Stancl\Tenancy\ResourceSyncing\Listeners;
use Illuminate\Support\Facades\DB; use Illuminate\Support\Facades\DB;
use Illuminate\Support\Facades\Schema;
use Stancl\Tenancy\Events\TenantDeleted; use Stancl\Tenancy\Events\TenantDeleted;
use Stancl\Tenancy\Listeners\QueueableListener; use Stancl\Tenancy\Listeners\QueueableListener;
@ -36,13 +37,17 @@ class DeleteAllTenantMappings extends QueueableListener
* 'tenant_users' => 'tenant_id', * 'tenant_users' => 'tenant_id',
* // You can also add more pivot tables here * // You can also add more pivot tables here
* ]; * ];
*
* Non-existent tables specified in the property will be skipped.
*/ */
public static array $pivotTables = ['tenant_resources' => 'tenant_id']; public static array $pivotTables = ['tenant_resources' => 'tenant_id'];
public function handle(TenantDeleted $event): void public function handle(TenantDeleted $event): void
{ {
foreach (static::$pivotTables as $table => $tenantKeyColumn) { foreach (static::$pivotTables as $table => $tenantKeyColumn) {
if (Schema::hasTable($table)) {
DB::table($table)->where($tenantKeyColumn, $event->tenant->getTenantKey())->delete(); DB::table($table)->where($tenantKeyColumn, $event->tenant->getTenantKey())->delete();
} }
} }
}
} }

View file

@ -978,10 +978,10 @@ test('DeleteAllTenantMappings handles incorrect configuration correctly', functi
// Should throw an exception when tenant is deleted // Should throw an exception when tenant is deleted
expect(fn() => $tenant1->delete())->toThrow(QueryException::class, "Unknown column 'non_existent_column' in 'where clause'"); expect(fn() => $tenant1->delete())->toThrow(QueryException::class, "Unknown column 'non_existent_column' in 'where clause'");
// Non-existent table // Non-existent table, the listener skips it, no exception to throw
DeleteAllTenantMappings::$pivotTables = ['nonexistent_pivot' => 'non_existent_column']; DeleteAllTenantMappings::$pivotTables = ['nonexistent_pivot' => 'non_existent_column'];
expect(fn() => $tenant2->delete())->toThrow(QueryException::class, "Table 'main.nonexistent_pivot' doesn't exist"); expect(fn() => $tenant2->delete())->not()->toThrow(Exception::class);
}); });
test('trashed resources are synced correctly', function () { test('trashed resources are synced correctly', function () {