yramid/symfony-commands

yramid/symfony-commands is a symfony console library using yramid/lib database migration

2.0.0 2022-02-01 16:19 UTC

This package is not auto-updated.

Last update: 2024-04-24 02:54:05 UTC


README

Setup

1. Create configuration

Create an accessible PHP file for the script with appropriate configuration:

<?php

return [
    'migrations' => [
        'path' => __DIR__ . '/../../db/migrations',
        'namespace' => 'Migration',
        'template' => null,
    ],
    'seeds' => [
        'path' => __DIR__ . '/../../db/seeds',
        'namespace' => 'Seeds',
        'template' => null,
    ],
    'connection' => 'sqlite:' . __DIR__ . '/../../db/migration.sqlite',
];

In the example relative to the project ROOT dev/db/config/migration.php.

connection can be both a DSN and a PDO instance. (https://www.php.net/manual/de/pdo.construct.php)

2. Create CLI script

Depending on the configuration file, an executable CLI script can now be created in which the Command classes are defined with corresponding constructor parameters.

#!/usr/bin/env php
<?php

use Symfony\Component\Console\Application;
use Yramid\Migration\Create;
use Yramid\Seed\Create as CreateSeed;
use Yramid\Migration\Migrate;
use Yramid\Migration\Rollback;
use Yramid\Seed\Run;
use Yramid\Migration\Savepoint\Set;
use Yramid\Migration\Status;
use Yramid\Migration\Savepoint\Remove;
use Yramid\Yramid;

require_once __DIR__ . '/../../vendor/autoload.php';

try {
    $migrationConfig = __DIR__ . '/../db/config/migration.php';

    $yramid = new Yramid();
    $app = new Application();
    $app->addCommands([
        (new Create('dbm:create', $migrationConfig, $yramid)),
        (new Status('dbm:status', $migrationConfig, $yramid)),
        (new Migrate('dbm:migrate', $migrationConfig, $yramid)),
        (new Rollback('dbm:rollback', $migrationConfig, $yramid)),
        (new CreateSeed('seed:create', $migrationConfig, $yramid)),
        (new Run('seed:run', $migrationConfig, $yramid)),
        (new Set('dbm:set-savepoint', $migrationConfig, $yramid)),
        (new Remove('dbm:unset-savepoint', $migrationConfig, $yramid)),
    ]);
    $app->run();
} catch (Exception $exception) {
    echo $exception->getMessage() . PHP_EOL;
}

In the example relative to the project ROOT dev/bin/cli.

Usage

Depending on the definitions in the CLI script, the commands are now accessible.

 dbm
  dbm:create           Use to create new migration files
  dbm:migrate          Migrate migration
  dbm:rollback         Rollback migration
  dbm:set-savepoint    Set migration savepoint
  dbm:status           List migration status
  dbm:unset-savepoint  Unset migration savepoint
 seed
  seed:create          Create a seed
  seed:run             Run seed

CreateCommand

To create new migration scripts.


cli dbm:create <description>
ArgumentDescription
descriptionThe migration description. From this the name and valid class name is generated.

StatusCommand

To output the status of all migrations.


cli dbm:status
 -------- ------------ ------------------------ -------------------------- -----------
  Status   Serial       Name                     Timestamp                  Savepoint  
 -------- ------------ ------------------------ -------------------------- -----------
  UP       1638271429   PartOne                  2021-12-03T11:17:45+0100              
  UP       1638271911   PartTwo                  2021-12-03T11:17:45+0100              
  UP       1638347995   SetAllTimestampFormats   2021-12-03T11:21:13+0100              
  UP       1638462559   DefineNewRelation        2021-12-03T11:21:13+0100   Save-rel0
  DOWN     1638462617   YourCurrentMigration     
 -------- ------------ ------------------------ -------------------------- -----------

Exemplary status output

MigrateCommand

To perform migrations to a specified destination target.


cli dbm:migrate [options]
OptionDescription
-t, --target[=TARGET]Target serial or savepoint up to which you want to migrate;
-d, --dry-runExecution in dry-run mode. (No real migration but DB transaction rollback).

RollbackCommand

Rolls back migrations to a specified target.


cli dbm:rollback [options]
OptionDescription
-t, --target[=TARGET]Target serial or savepoint to be rolled back to;
-d, --dry-runExecution in dry-run mode. (No real migration-rollback but DB transaction rollback).

CreateSeedCommand

For creation of seeds.


cli  seed:create <description>
ArgumentDescription
descriptionThe seed description. From this the name and valid class name is generated.

RunSeedCommand

For processing specific seeds.


cli seed:run [options] [--] <name>
ArgumentDescription
nameName of the seed to be processed.
OptionBeschreibung
-d, --dry-runExecution in dry-run mode. (No real DB commit but DB transaction rollback).

SetSavepointCommand

For the definition of savepoints.


cli dbm:set-savepoint [options]
ArgumentDescription
savepointString of the savepoint to set;
OptionDescription
-t, --target[=TARGET]Target of migration at this the savepoint should be set.

RemoveSavepointCommand

To remove a savepoint from a migration.


cli dbm:unset-savepoint [options]
ArgumentDescription
savepointString of the savepoint or serial to unset;