2017 © Pedro Peláez
 

library laravel-conditional-migrations

Run your Laravel migrations only when you want them to

image

onlinepets/laravel-conditional-migrations

Run your Laravel migrations only when you want them to

  • Wednesday, March 28, 2018
  • by svenluijten
  • Repository
  • 2 Watchers
  • 1 Stars
  • 89 Installations
  • PHP
  • 0 Dependents
  • 0 Suggesters
  • 0 Forks
  • 0 Open issues
  • 2 Versions
  • 585 % Grown

The README.md

Deprecated:

We don't maintain this version anymore, checkout Laravel conditional migrations for the latest version


Laravel Conditional Migrations

Latest Version on Packagist Total Downloads ![Software License][ico-license] ![Build Status][ico-travis] StyleCI, (*1)

This package allows you to configure migrations to run based on a condition. We expose a ConditionalMigration interface, which you can have your migrations implement to determine whether or not it should run., (*2)

Index

Installation

You'll have to follow a couple of steps to install this package., (*3)

Downloading

Via composer:, (*4)

$ composer require onlinepets/laravel-conditional-migrations

Or add the package to your dependencies in composer.json and run composer update on the command line to download the package:, (*5)

{
    "require": {
        "onlinepets/laravel-conditional-migrations": "^1.0"
    }
}

Registering the service provider

If you're not using auto discovery, register the \Onlinepets\ConditionalMigrations\ServiceProvider in config/app.php:, (*6)

'providers' => [
    // ...
    Onlinepets\ConditionalMigrations\ServiceProvider::class,
];

Usage

To make sure a migration only runs between 1 AM and 2 AM, implement the ConditionalMigration interface and its ->shouldRun() method:, (*7)

use Onlinepets\ConditionalMigrations\Contracts\ConditionalMigration;
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
use Illuminate\Support\Carbon;

class DoSomethingVeryIntensive extends Migration implements ConditionalMigration
{
    public function up()
    {
        Schema::table('users', function (Blueprint $table) {
            //
        });
    }

    public function down()
    {
        Schema::table('users', function (Blueprint $table) {
            //
        });
    }

    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., (*8)

Nightly cronjob

To take full advantage of this package, you can schedule a task to migrate the database during the "whitelisted" times. This package does not implement this., (*9)

Configuration

You can optionally publish the configuration file:, (*10)

$ php artisan vendor:publish --provider="Onlinepets\ConditionalMigrations\ServiceProvider"

This will create the file config/conditional-migrations.php, which is where you can configure whether your migrations should run, regardless of individual configuration:, (*11)

return [

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

];

You can also use a closure if you want to do more advanced calculations:, (*12)

return [

    'always_run' => function (): bool {
        // calculate whether it should run
    },

];

Contributing

All contributions (pull requests, issues and feature requests) are welcome. Make sure to read through the CONTRIBUTING.md first, though. See the contributors page for all contributors., (*13)

License

onlinepets/laravel-conditional-migrations is licensed under the MIT License (MIT). Please see the license file for more information., (*14)

The Versions

28/03 2018

dev-master

9999999-dev

Run your Laravel migrations only when you want them to

  Sources   Download

MIT

The Requires

 

The Development Requires

by Thomas Moors

database laravel migrations eloquent cronjob cron

28/03 2018

v1.0.0

1.0.0.0

Run your Laravel migrations only when you want them to

  Sources   Download

MIT

The Requires

 

The Development Requires

by Thomas Moors

database laravel migrations eloquent cronjob cron