BDSM Does Simple Migrations
, (*1)
A really simple migrations library. It is currently not meant to be used in production but nobody's going to stop you if you really want to. Use at your own risk., (*2)
Usage
Installing
Installing it is easy, just require turanct/bdsm
as a development dependency in your composer.json
file, and configure a bin-dir
. The bdsm executable will be available in your bin directory when you've run composer install
., (*3)
{
"require-dev": {
"turanct/bdsm": "dev-master"
},
"config": {
"bin-dir": "bin"
}
}
Bootstrapping
The bdsm
executable expects a .bdsm.php
file in the working directory of your project. In this file you can do all necessary bootstrapping. It just needs to return an array with these elements:, (*4)
- The directory where we can find migrations
- The file in which we can log which migrations we ran
- A database adapter, implementing the really simple
Bdsm\Database
interface
<?php
use Bdsm\Database;
final class MyDatabaseAdapter implements Database
{
public function query($query)
{
var_dump($query);
}
}
return array(
__DIR__ . '/migrations',
__DIR__ . '/.bdsm.log.json',
new MyDatabaseAdapter(),
);
In this case, we provided a directory migrations
in which the migrations will live, and a log file .bdsm.log.json
to which the system can log. The database adapter in this example will not actually connect to a database, but it will print out every query issued., (*5)
First migration
We're ready to create our first migration right now! Run the bdsm
command with the create
parameter., (*6)
$ bin/bdsm create
Migration "Migration1441375998" created...
You can also pass a custom migration name as a parameter. A new migration will be created in our migrations directory with these contents:, (*7)
<?php
use Bdsm\Migration;
use Bdsm\Database;
final class Migration1441375998 implements Migration
{
public function up(Database $database)
{
}
public function down(Database $database)
{
}
}
We can now simply script the up and down actions for our migration, and then check it's status. It should be red., (*8)
$ bin/bdsm status
✘ Migration1441375998
Running it is as simple as bdsm up Migration1441375998
. Note that you can run all migrations at once using bdsm up
without arguments., (*9)
$ bin/bdsm up Migration1441375998
Do you want to migrate UP migration Migration1441375998? (Y/n)
Migrated...
Another look at the migration status shows us that we succeeded!, (*10)
$ bin/bdsm status
✔︎ Migration1441375998
Migrating down is exactly the same procedure, but with down
instead of up
commands., (*11)
Tests
BDSM has unit tests, located in the tests
directory. These tests are written using phpunit. To run them, make sure you did a composer install
and run phpunit., (*12)
$ sbin/phpunit
Contributing
Feel free to fork and send pull requests!, (*13)
License
This library is MIT licensed. See also LICENSE.md, (*14)