1
0
Fork 0
mirror of https://github.com/archtechx/tenancy.git synced 2026-02-05 20:34:03 +00:00

Merge branch 'master' into shift-64622

This commit is contained in:
Abrar Ahmad 2022-07-20 18:07:10 +05:00
commit 042beecb9c
4 changed files with 85 additions and 2 deletions

View file

@ -40,7 +40,13 @@ class TenancyServiceProvider extends ServiceProvider
Events\TenantSaved::class => [],
Events\UpdatingTenant::class => [],
Events\TenantUpdated::class => [],
Events\DeletingTenant::class => [],
Events\DeletingTenant::class => [
JobPipeline::make([
Jobs\DeleteDomains::class,
])->send(function (Events\DeletingTenant $event) {
return $event->tenant;
})->shouldBeQueued(false),
],
Events\TenantDeleted::class => [
JobPipeline::make([
Jobs\DeleteDatabase::class,

View file

@ -21,7 +21,7 @@ class CreateDomainsTable extends Migration
$table->string('tenant_id');
$table->timestamps();
$table->foreign('tenant_id')->references('id')->on('tenants')->onUpdate('cascade')->onDelete('cascade');
$table->foreign('tenant_id')->references('id')->on('tenants')->onUpdate('cascade');
});
}

View file

@ -0,0 +1,35 @@
<?php
declare(strict_types=1);
namespace Stancl\Tenancy\Jobs;
use Illuminate\Bus\Queueable;
use Illuminate\Contracts\Queue\ShouldQueue;
use Illuminate\Foundation\Bus\Dispatchable;
use Illuminate\Queue\InteractsWithQueue;
use Illuminate\Queue\SerializesModels;
use Stancl\Tenancy\Contracts\TenantWithDatabase;
use Stancl\Tenancy\Database\Models\Domain;
use Stancl\Tenancy\Events\DatabaseDeleted;
use Stancl\Tenancy\Events\DeletingDatabase;
use Stancl\Tenancy\Events\DeletingDomain;
use Stancl\Tenancy\Events\DomainDeleted;
class DeleteDomains
{
use Dispatchable, InteractsWithQueue, Queueable, SerializesModels;
/** @var TenantWithDatabase */
protected $tenant;
public function __construct(TenantWithDatabase $tenant)
{
$this->tenant = $tenant;
}
public function handle()
{
$this->tenant->domains->each->delete();
}
}

View file

@ -0,0 +1,42 @@
<?php
declare(strict_types=1);
namespace Stancl\Tenancy\Tests;
use Stancl\Tenancy\Database\Concerns\HasDomains;
use Stancl\Tenancy\Jobs\DeleteDomains;
class DeleteDomainsJobTest extends TestCase
{
public function setUp(): void
{
parent::setUp();
config(['tenancy.tenant_model' => DatabaseAndDomainTenant::class]);
}
/** @test */
public function job_delete_domains_successfully()
{
$tenant = DatabaseAndDomainTenant::create();
$tenant->domains()->create([
'domain' => 'foo.localhost',
]);
$tenant->domains()->create([
'domain' => 'bar.localhost',
]);
$this->assertSame($tenant->domains()->count(), 2);
(new DeleteDomains($tenant))->handle();
$this->assertSame($tenant->refresh()->domains()->count(), 0);
}
}
class DatabaseAndDomainTenant extends Etc\Tenant
{
use HasDomains;
}