mirror of
https://github.com/archtechx/tenancy.git
synced 2026-02-05 08:24:05 +00:00
Improve code style, beforeEach cleanup
This commit is contained in:
parent
5b07afcc33
commit
b964aa90d3
1 changed files with 5 additions and 41 deletions
|
|
@ -22,59 +22,23 @@ use Stancl\Tenancy\Bootstrappers\Integrations\PostgresSingleDatabaseBootstrapper
|
||||||
beforeEach(function () {
|
beforeEach(function () {
|
||||||
DB::purge('central');
|
DB::purge('central');
|
||||||
|
|
||||||
config(['tenancy.bootstrappers' => [PostgresSingleDatabaseBootstrapper::class]]);
|
|
||||||
|
|
||||||
Event::listen(TenancyInitialized::class, BootstrapTenancy::class);
|
Event::listen(TenancyInitialized::class, BootstrapTenancy::class);
|
||||||
Event::listen(TenancyEnded::class, RevertToCentralContext::class);
|
Event::listen(TenancyEnded::class, RevertToCentralContext::class);
|
||||||
|
|
||||||
|
config(['tenancy.bootstrappers' => [PostgresSingleDatabaseBootstrapper::class]]);
|
||||||
config(['database.connections.central' => config('database.connections.pgsql')]);
|
config(['database.connections.central' => config('database.connections.pgsql')]);
|
||||||
config(['tenancy.models.tenant_key_column' => 'tenant_id']);
|
config(['tenancy.models.tenant_key_column' => 'tenant_id']);
|
||||||
config(['tenancy.models.tenant' => $tenantClass = Tenant::class]);
|
config(['tenancy.models.tenant' => Tenant::class]);
|
||||||
config(['tenancy.models.rls' => [
|
config(['tenancy.models.rls' => [
|
||||||
$primaryModelClass = Post::class, // Primary model (directly belongs to tenant)
|
Post::class, // Primary model (directly belongs to tenant)
|
||||||
$secondaryModelClass = ScopedComment::class, // Secondary model (belongs to tenant through a primary model)
|
ScopedComment::class, // Secondary model (belongs to tenant through a primary model)
|
||||||
]]);
|
]]);
|
||||||
|
|
||||||
$tenantModel = new $tenantClass;
|
|
||||||
$primaryModel = new $primaryModelClass;
|
|
||||||
$secondaryModel = new $secondaryModelClass;
|
|
||||||
|
|
||||||
$tenantTable = $tenantModel->getTable();
|
|
||||||
|
|
||||||
// Drop all existing policies
|
// Drop all existing policies
|
||||||
DB::transaction(function () use ($tenantTable, $primaryModel, $secondaryModel) {
|
DB::transaction(function () {
|
||||||
foreach (DB::select('select * from pg_policies') as $policy) {
|
foreach (DB::select('select * from pg_policies') as $policy) {
|
||||||
DB::statement("DROP POLICY IF EXISTS {$policy->policyname} ON {$policy->tablename}");
|
DB::statement("DROP POLICY IF EXISTS {$policy->policyname} ON {$policy->tablename}");
|
||||||
}
|
}
|
||||||
|
|
||||||
Schema::dropIfExists('domains');
|
|
||||||
DB::statement("DROP TABLE IF EXISTS {$secondaryModel->getTable()} CASCADE");
|
|
||||||
DB::statement("DROP TABLE IF EXISTS {$primaryModel->getTable()} CASCADE");
|
|
||||||
DB::statement("DROP TABLE IF EXISTS $tenantTable CASCADE");
|
|
||||||
|
|
||||||
Schema::create($tenantTable, function (Blueprint $table) {
|
|
||||||
$table->string('id')->primary();
|
|
||||||
$table->timestamps();
|
|
||||||
$table->json('data')->nullable();
|
|
||||||
});
|
|
||||||
|
|
||||||
Schema::create($primaryModel->getTable(), function (Blueprint $table) {
|
|
||||||
$table->id();
|
|
||||||
$table->string('text');
|
|
||||||
$table->string($tenantKeyColumn = config('tenancy.models.tenant_key_column'));
|
|
||||||
|
|
||||||
$table->timestamps();
|
|
||||||
$table->foreign($tenantKeyColumn)->references(tenancy()->model()->getKeyName())->on(tenancy()->model()->getTable())->onUpdate('cascade')->onDelete('cascade');
|
|
||||||
});
|
|
||||||
|
|
||||||
Schema::create($secondaryModel->getTable(), function (Blueprint $table) use ($primaryModel) {
|
|
||||||
$table->id();
|
|
||||||
$table->string('text');
|
|
||||||
$table->unsignedBigInteger($primaryModel->getForeignKey());
|
|
||||||
|
|
||||||
$table->timestamps();
|
|
||||||
$table->foreign($primaryModel->getForeignKey())->references($primaryModel->getKeyName())->on($primaryModel->getTable())->onUpdate('cascade')->onDelete('cascade');
|
|
||||||
});
|
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue