mll-lab/laravel-conditional-migrations

This package is abandoned and no longer maintained. The author suggests using the mll-lab/laravel-utils package instead.

Run your Laravel migrations only when you want them to

v3.1.1 2023-02-10 13:44 UTC

This package is auto-updated.

Last update: 2024-04-23 08:18:38 UTC


README

Deprecated

This package is deprecated in favor of https://github.com/mll-lab/laravel-utils/releases/tag/v4.0.0 and will no longer be updated.

CI Status codecov

Packagist Latest Stable Version GitHub license

Run migrations only if a condition is true

Based on https://github.com/onlinepets/laravel-conditional-migrations

Installation

Via composer:

composer require mll-lab/laravel-conditional-migrations

Usage

To run a migration conditionally, implement the ConditionalMigration interface and its ->shouldRun() method:

use MLL\ConditionalMigrations\Contracts\ConditionalMigration;
use Illuminate\Database\Migrations\Migration;
use Illuminate\Support\Carbon;

class DoSomethingVeryIntensive extends Migration implements ConditionalMigration
{
    public function up() { ... }
    public function down() { ... }

    public function shouldRun(): bool
    {
        return (new Carbon('1 AM'))->lessThan(now())
            && (new Carbon('2 AM'))->greaterThan(now());
    }
}

The code snippet above will make sure the do_something_very_intensive migration will be skipped unless it is executed between 1 AM and 2 AM. This can be useful if your migration does something that should not be run during the daytime, like adding an index to a table containing lots of data.

Configuration

You can optionally publish the configuration file:

php artisan vendor:publish --tags=conditional-migrations-config

This will create the file config/conditional-migrations.php.

The always_run option allows you to overrule the conditions set in individual migrations.

'always_run' => env('APP_DEBUG', false),

You can also use a closure if you want to do more advanced calculations:

'always_run' => function (): bool {
    // calculate if migrations should always run
},

Changelog

All notable changes to this project are documented in CHANGELOG.md.

Contributing

Contributions are welcome, see CONTRIBUTING.md.

License

See LICENSE.md.