2017 © Pedro Peláez
 

library php-mongo-migrations

Manage changes for your MongoDB documents

image

gruberro/php-mongo-migrations

Manage changes for your MongoDB documents

  • Monday, November 20, 2017
  • by gruberro
  • Repository
  • 4 Watchers
  • 8 Stars
  • 15,260 Installations
  • PHP
  • 0 Dependents
  • 0 Suggesters
  • 4 Forks
  • 0 Open issues
  • 10 Versions
  • 21 % Grown

The README.md

MongoDB Migrations

This command line application supports you in managing migrations for your MongoDB documents. These migrations should make part of your code changes and can be executed through your deployment., (*1)

Installation

composer require gruberro/php-mongo-migrations=^0.2

Writing migrations

You can write you own migrations by implementing the Gruberro\MongoDbMigrations\MigrationInterface interface:, (*2)

<?php declare(strict_types=1);

namespace MyMigrations;

use Gruberro\MongoDbMigrations;
use MongoDB\Database;

class CreateUserCollection implements MongoDbMigrations\MigrationInterface
{
    /**
     * {@inheritdoc}
     */
    public function getId(): string
    {
        return 'create-user-collection-and-its-indexes';
    }

    /**
     * {@inheritdoc}
     */
    public function getCreateDate(): \DateTime
    {
        return new \DateTime('2016-02-25 16:30:00');
    }

    /**
     * Creates a user collection and it's indexes
     *
     * This migration creates the required user collection to establish an application login and it's required indexes.
     * An overall admin user is created as well.
     *
     * {@inheritdoc}
     */
    public function execute(Database $db)
    {
        $userCollection = $db->selectCollection('user');

        $userCollection->createIndex(['email_address' => 1], ['unique' => true]);

        $userCollection->insertOne(['username' => 'admin', 'password' => password_hash('topsecret', PASSWORD_DEFAULT), 'email_address' => 'admin@exmaple.com']);
    }
}

You can optionally implement the Gruberro\MongoDbMigrations\RunAlwaysMigrationInterface interface to ensure a migration class is executed on every run., (*3)

Implementing the Gruberro\MongoDbMigrations\ContextualMigrationInterface will allow you to specify a list of contexts to give additional control to your migrations., (*4)

Take a look at the examples to get some more insights., (*5)

Using the command line interface

Now you can easily execute your migrations by starting the migration command:, (*6)

./vendor/bin/migrations php-mongodb-migrations:migrate -c stage1 -c stage2 -s mongodb://localhost:27017 my_database path/to/my/migrations/ path/to/other/migrations

Internal processing sequence

  1. Gathering all migrations from the configured directories
  2. Check for uniqueness (getId()) for all migrations
  3. Ordering all migrations according their create date (getCreateDate())
  4. Locks other runs by creating a special document in DATABASE_MIGRATIONS_LOCK (take a look at the php-mongodb-migrations:release-lock command to release a lock manually)
  5. Executes the migrations, if
    • at least one context is matching (no context is always matching) and
    • a migration has not been executed before or
    • the migration is marked as run always.
  6. Stores a successfully executed migration in the collection DATABASE_MIGRATIONS.
  7. Releases the run lock in DATABASE_MIGRATIONS_LOCK under any circumstances.

The Versions

20/11 2017

dev-master

9999999-dev

Manage changes for your MongoDB documents

  Sources   Download

MIT

The Requires

 

The Development Requires

by Robert Gruber

20/11 2017

0.3.1

0.3.1.0

Manage changes for your MongoDB documents

  Sources   Download

MIT

The Requires

 

The Development Requires

by Robert Gruber

24/08 2017

0.3.0

0.3.0.0

Manage changes for your MongoDB documents

  Sources   Download

MIT

The Requires

 

The Development Requires

by Robert Gruber

24/08 2017

dev-add-and-delete-versions

dev-add-and-delete-versions

Manage changes for your MongoDB documents

  Sources   Download

MIT

The Requires

 

The Development Requires

by Robert Gruber

09/08 2017

0.2.4

0.2.4.0

Manage changes for your MongoDB documents

  Sources   Download

MIT

The Requires

 

The Development Requires

by Robert Gruber

14/06 2017

0.2.3

0.2.3.0

Manage changes for your MongoDB documents

  Sources   Download

MIT

The Requires

 

The Development Requires

by Robert Gruber

03/05 2017

0.2.2

0.2.2.0

Manage changes for your MongoDB documents

  Sources   Download

MIT

The Requires

 

The Development Requires

by Robert Gruber

01/08 2016

0.2.1

0.2.1.0

Manage changes for your MongoDB documents

  Sources   Download

MIT

The Requires

 

The Development Requires

by Robert Gruber

26/07 2016

0.2.0

0.2.0.0

Manage changes for your MongoDB documents

  Sources   Download

MIT

The Requires

 

The Development Requires

by Robert Gruber

09/03 2016

0.1.0

0.1.0.0

Manage changes for your MongoDB documents

  Sources   Download

MIT

The Requires

 

The Development Requires

by Robert Gruber