59 lines
1.7 KiB
PHP
59 lines
1.7 KiB
PHP
<?php
|
|
// tests/Feature/Components/Api/Traits/HandlesCustomSchemas.php
|
|
|
|
namespace Tests\Feature\Components\Api\Traits;
|
|
|
|
use Illuminate\Support\Facades\DB;
|
|
use Illuminate\Foundation\Testing\Concerns\InteractsWithConsole;
|
|
|
|
trait HandlesCustomSchemas
|
|
{
|
|
use InteractsWithConsole;
|
|
|
|
/**
|
|
* Clean up custom schemas before fresh migration
|
|
*/
|
|
protected function cleanSchemas(): void
|
|
{
|
|
// Drop only custom schemas
|
|
$customSchemas = ['auth', 'org'];
|
|
foreach ($customSchemas as $schema) {
|
|
DB::statement("DROP SCHEMA IF EXISTS {$schema} CASCADE");
|
|
}
|
|
|
|
// Clean public schema tables but don't drop the schema
|
|
DB::statement("TRUNCATE TABLE public.users CASCADE");
|
|
DB::statement("TRUNCATE TABLE public.migrations CASCADE");
|
|
DB::statement("TRUNCATE TABLE public.failed_jobs CASCADE");
|
|
DB::statement("TRUNCATE TABLE public.password_reset_tokens CASCADE");
|
|
DB::statement("TRUNCATE TABLE public.personal_access_tokens CASCADE");
|
|
|
|
// Recreate custom schemas
|
|
foreach ($customSchemas as $schema) {
|
|
DB::statement("CREATE SCHEMA IF NOT EXISTS {$schema}");
|
|
}
|
|
}
|
|
|
|
/**
|
|
* Run custom schema migrations
|
|
*/
|
|
protected function runCustomMigrations(): void
|
|
{
|
|
$this->cleanSchemas();
|
|
|
|
$paths = [
|
|
'database/migrations/public',
|
|
'database/migrations/auth',
|
|
'database/migrations/org',
|
|
];
|
|
|
|
foreach ($paths as $path) {
|
|
$this->artisan('migrate', [
|
|
'--path' => $path,
|
|
'--database' => 'pgsql',
|
|
'--force' => true,
|
|
]);
|
|
}
|
|
}
|
|
}
|