Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Refactor and Improve module:migrate and module:migrate:fresh Commands #1866

Merged
merged 2 commits into from
Jun 16, 2024

Conversation

alissn
Copy link
Contributor

@alissn alissn commented Jun 4, 2024

Hi,

This pull request contains two main changes.

module:migrate:fresh


I moved the functionality of the module:migrate-fresh command to a new structure and extended it from baseCommand to allow selecting a specific module for migration.

Additionally, I refactored the module:migrate-fresh command to handle the fresh migration process manually with the following steps:

  1. Drop all tables.
  2. Create the migration table.
  3. Check and run the root migrations (excluding the Modules folder).
  4. Execute the module:migrate command for the selected module.

module:migrate


The previous functionality did not run migrations from subfolders in the database/migrations directory. Sometimes, custom folders are defined for migrations within a module to manage different versions or conditions, such as:

$this->loadMigrationsFrom(module_path($this->moduleName, 'database/migrations'));

foreach (range(1, $this->maxVersion()) as $version) {
    $this->loadMigrationsFrom(
        module_path($this->moduleName, "database/migrations/v{$version}")
    );
}

Or when migrations need to be loaded conditionally based on the existence of other modules:

$this->loadMigrationsFrom(module_path($this->moduleName, 'Database/Migrations'));

$modules = File::directories(module_path($this->moduleName, 'Database/Migrations/Modules/'));
foreach ($modules as $module) {
    $module = basename($module);
    if (checkModuleAvailable($module)) {
        $this->loadMigrationsFrom(module_path($this->moduleName, 'Database/Migrations/Modules/' . $module));
    }
}

This change retrieves the migration paths from Laravel's migrator and passes them to the migrate command, ensuring all necessary migrations are executed.

If you need more details, I can provide further explanations.

Thanks

@dcblogdev dcblogdev self-assigned this Jun 15, 2024
@dcblogdev dcblogdev merged commit 6ab190d into nWidart:master Jun 16, 2024
2 of 3 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants