1
0
Fork 0
mirror of https://github.com/archtechx/tenancy.git synced 2025-12-12 19: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;
use Illuminate\Support\Facades\DB;
use Illuminate\Support\Facades\Schema;
use Stancl\Tenancy\Events\TenantDeleted;
use Stancl\Tenancy\Listeners\QueueableListener;
@ -36,13 +37,17 @@ class DeleteAllTenantMappings extends QueueableListener
* 'tenant_users' => 'tenant_id',
* // 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 function handle(TenantDeleted $event): void
{
foreach (static::$pivotTables as $table => $tenantKeyColumn) {
DB::table($table)->where($tenantKeyColumn, $event->tenant->getTenantKey())->delete();
if (Schema::hasTable($table)) {
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
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'];
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 () {