mirror of
https://github.com/archtechx/tenancy.git
synced 2025-12-12 20:14:03 +00:00
[4.x] Make tenants:migrate default to configured schema path (#985)
* Add --schema-path to migration parameters config * Set TenantDump's path to configured schema-path if the path doesn't get passed * Test schema dump file creation and usage * Fix code style (php-cs-fixer) * hardcode default instead of reading from a config key that doesn't have to exist Co-authored-by: PHP CS Fixer <phpcsfixer@example.com> Co-authored-by: Samuel Štancl <samuel.stancl@gmail.com>
This commit is contained in:
parent
8c34640948
commit
a1a976c863
3 changed files with 38 additions and 0 deletions
|
|
@ -258,6 +258,7 @@ return [
|
||||||
'migration_parameters' => [
|
'migration_parameters' => [
|
||||||
'--force' => true, // This needs to be true to run migrations in production.
|
'--force' => true, // This needs to be true to run migrations in production.
|
||||||
'--path' => [database_path('migrations/tenant')],
|
'--path' => [database_path('migrations/tenant')],
|
||||||
|
'--schema-path' => database_path('schema/tenant-schema.dump'),
|
||||||
'--realpath' => true,
|
'--realpath' => true,
|
||||||
],
|
],
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -22,6 +22,10 @@ class TenantDump extends DumpCommand
|
||||||
|
|
||||||
public function handle(ConnectionResolverInterface $connections, Dispatcher $dispatcher): int
|
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->option('tenant')
|
||||||
?? tenant()
|
?? tenant()
|
||||||
?? $this->ask('What tenant do you want to dump the schema for?')
|
?? $this->ask('What tenant do you want to dump the schema for?')
|
||||||
|
|
|
||||||
|
|
@ -120,6 +120,39 @@ test('dump command works', function () {
|
||||||
expect('tests/Etc/tenant-schema-test.dump')->toBeFile();
|
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 () {
|
test('rollback command works', function () {
|
||||||
$tenant = Tenant::create();
|
$tenant = Tenant::create();
|
||||||
Artisan::call('tenants:migrate');
|
Artisan::call('tenants:migrate');
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue