mirror of
https://github.com/archtechx/tenancy.git
synced 2026-02-05 17:34:03 +00:00
Use DB transactions
This commit is contained in:
parent
ea9690f915
commit
47fe86c21e
2 changed files with 29 additions and 29 deletions
|
|
@ -39,9 +39,7 @@ class CreatePostgresUserForTenant implements ShouldQueue
|
||||||
|
|
||||||
// Create the user only if it doesn't already exist
|
// Create the user only if it doesn't already exist
|
||||||
if (! count(DB::select("SELECT usename FROM pg_user WHERE usename = '$name';")) > 0) {
|
if (! count(DB::select("SELECT usename FROM pg_user WHERE usename = '$name';")) > 0) {
|
||||||
DB::transaction(function () use ($name, $password) {
|
DB::transaction(fn () => DB::statement("CREATE USER \"$name\" LOGIN PASSWORD '$password';"));
|
||||||
DB::statement("CREATE USER \"$name\" LOGIN PASSWORD '$password';");
|
|
||||||
});
|
|
||||||
}
|
}
|
||||||
|
|
||||||
$this->grantPermissions((string) $name);
|
$this->grantPermissions((string) $name);
|
||||||
|
|
|
||||||
|
|
@ -42,6 +42,7 @@ beforeEach(function () {
|
||||||
$tenantTable = $tenantModel->getTable();
|
$tenantTable = $tenantModel->getTable();
|
||||||
|
|
||||||
// Drop all existing policies
|
// Drop all existing policies
|
||||||
|
DB::transaction(function () use ($tenantTable, $primaryModel, $secondaryModel) {
|
||||||
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}");
|
||||||
}
|
}
|
||||||
|
|
@ -75,6 +76,7 @@ beforeEach(function () {
|
||||||
$table->foreign($primaryModel->getForeignKey())->references($primaryModel->getKeyName())->on($primaryModel->getTable())->onUpdate('cascade')->onDelete('cascade');
|
$table->foreign($primaryModel->getForeignKey())->references($primaryModel->getKeyName())->on($primaryModel->getTable())->onUpdate('cascade')->onDelete('cascade');
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
});
|
||||||
|
|
||||||
test('postgres user can get created using the job', function() {
|
test('postgres user can get created using the job', function() {
|
||||||
$tenant = Tenant::create();
|
$tenant = Tenant::create();
|
||||||
|
|
@ -112,7 +114,7 @@ test('correct rls policies get created', function () {
|
||||||
|
|
||||||
// Drop all existing policies to check if the command creates policies for multiple tables
|
// Drop all existing policies to check if the command creates policies for multiple tables
|
||||||
foreach ($getRlsPolicies() as $policy) {
|
foreach ($getRlsPolicies() as $policy) {
|
||||||
DB::statement("DROP POLICY IF EXISTS {$policy->policyname} ON {$policy->tablename}");
|
DB::transaction(fn () => DB::statement("DROP POLICY IF EXISTS {$policy->policyname} ON {$policy->tablename}"));
|
||||||
}
|
}
|
||||||
|
|
||||||
expect($getRlsPolicies())->toHaveCount(0);
|
expect($getRlsPolicies())->toHaveCount(0);
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue