diff --git a/assets/config.php b/assets/config.php index eb68d9b0..0e035953 100644 --- a/assets/config.php +++ b/assets/config.php @@ -258,6 +258,7 @@ return [ 'migration_parameters' => [ '--force' => true, // This needs to be true to run migrations in production. '--path' => [database_path('migrations/tenant')], + '--schema-path' => database_path('schema/tenant-schema.dump'), '--realpath' => true, ], diff --git a/src/Commands/TenantDump.php b/src/Commands/TenantDump.php index 6edae6b0..3f957bdd 100644 --- a/src/Commands/TenantDump.php +++ b/src/Commands/TenantDump.php @@ -22,6 +22,10 @@ class TenantDump extends DumpCommand public function handle(ConnectionResolverInterface $connections, Dispatcher $dispatcher): int { + if (is_null($this->option('path'))) { + $this->input->setOption('path', database_path('schema/tenant-schema.dump')); + } + $tenant = $this->option('tenant') ?? tenant() ?? $this->ask('What tenant do you want to dump the schema for?') diff --git a/tests/CommandsTest.php b/tests/CommandsTest.php index 793dca30..9a9f0bc5 100644 --- a/tests/CommandsTest.php +++ b/tests/CommandsTest.php @@ -120,6 +120,39 @@ test('dump command works', function () { expect('tests/Etc/tenant-schema-test.dump')->toBeFile(); }); +test('tenant dump file gets created as tenant-schema.dump in the database schema folder by default', function() { + config(['tenancy.migration_parameters.--schema-path' => $schemaPath = database_path('schema/tenant-schema.dump')]); + + $tenant = Tenant::create(); + Artisan::call('tenants:migrate'); + + tenancy()->initialize($tenant); + + Artisan::call('tenants:dump'); + + expect($schemaPath)->toBeFile(); + unlink($schemaPath); +}); + +test('migrate command uses the correct schema path by default', function () { + config(['tenancy.migration_parameters.--schema-path' => 'tests/Etc/tenant-schema.dump']); + $tenant = Tenant::create(); + + expect(Schema::hasTable('schema_users'))->toBeFalse(); + expect(Schema::hasTable('users'))->toBeFalse(); + + Artisan::call('tenants:migrate'); + + expect(Schema::hasTable('schema_users'))->toBeFalse(); + expect(Schema::hasTable('users'))->toBeFalse(); + + tenancy()->initialize($tenant); + + // Check for both tables to see if missing migrations also get executed + expect(Schema::hasTable('schema_users'))->toBeTrue(); + expect(Schema::hasTable('users'))->toBeTrue(); +}); + test('rollback command works', function () { $tenant = Tenant::create(); Artisan::call('tenants:migrate');