Pink-Crab/WPDB_Migrations

View on GitHub
docs/migration-manager.md

Summary

Maintainability
Test Coverage
Manager for handling and processing migrations

# Public Methods

> ## __construct( Builder $builder, wpdb $wpdb, ?string $migration_log_key = null )
> `@param  PinkCrab\Table_Builder\Builder  $builder  Instance of Table Builder`  
> `@param  wpdb  $wpdb  Valid instance of WPDB`  
> `@param  string|null  $migration_log_key  Migration log key`

Creates an instance of the migration manager

```php
$migrations = new PinkCrab\DB_Migration\Migration_Manager($builder, $wpdb, 'acme_migrations');
// Its also possible to use the Factory
$migrations = PinkCrab\DB_Migration\Factory::migration_log('acme_migrations', $wpdb);
```

> See [Log Manager](log-manager.md) for details about `$migration_log_key`

***

> ## add_migration( Database_Migration $migration ): Migration_Manager  
> `@param  PinkCrab\DB_Migration\Database_Migration Instance of a Database Migration`  
> `@return  PinkCrab\DB_Migration\Migration_Manager`

Adds a Migration to the manager

```php
$migrations = new Migration_Manager($builder, $wpdb, 'acme_migrations');

$migration_foo = new Migration_Foo();
$migration_bar = new Migration_Bar();

$migrations->add_migration($migration_foo);
$migrations->add_migration($migration_bar);
```

***

> ## get_migrations(): array  
> `@return  PinkCrab\DB_Migration\Database_Migration[]`

Gets all current migrations added to the manager

```php
$migrations = new Migration_Manager($builder, $wpdb, 'acme_migrations');

$migration_foo = new Migration_Foo();
$migration_bar = new Migration_Bar();
$migrations->add_migration($migration_foo);
$migrations->add_migration($migration_bar);

dump($migrations->get_migrations()); // [Migration_Foo{}, Migration_Bar{}]
```

***

> ## create_tables( string ...$excluded_table ): Migration_Manager  
> `@param string ...$exclude_table Tables to be skipped`
> `@return  PinkCrab\DB_Migration\Migration_Manager`

Create/Updates all tables, excluding any table names passed. . Once created, a record is made in the log.

```php
$migrations = new Migration_Manager($builder, $wpdb, 'acme_migrations');

$migration_foo = new Migration_Foo();  // Table name = foo_table
$migration_bar = new Migration_Bar();  // Table name = bar_table
$migrations->add_migration($migration_foo);
$migrations->add_migration($migration_bar);

$migrations->create_tables('bar_table');              // Would only create foo_table
$migrations->create_tables('bar_table', 'foo_table'); // Would create no tables.
```

***

> ## seed_tables( string ...$excluded_table ): Migration_Manager  
> `@param string ...$exclude_table Tables to be skipped`
> `@return  PinkCrab\DB_Migration\Migration_Manager`

Seeds all data to the tables, if not already seeded previously. Once seeded, a record is made in the log.
> Please note a table can only be seeded once, even if the schema has changed!

```php
$migrations = new Migration_Manager($builder, $wpdb, 'acme_migrations');

$migration_foo = new Migration_Foo();  // Table name = foo_table
$migration_bar = new Migration_Bar();  // Table name = bar_table
$migrations->add_migration($migration_foo);
$migrations->add_migration($migration_bar);

$migrations->seed_tables('bar_table');              // Would only seed foo_table
$migrations->seed_tables('bar_table', 'foo_table'); // Would seed no tables.
```

***

> ## drop_tables( string ...$excluded_table ): Migration_Manager  
> `@param string ...$exclude_table Tables to be skipped`
> `@return  PinkCrab\DB_Migration\Migration_Manager`

Drops all data to the tables, if not already seeded previously. Once dropped, any log is removed, so this could be re-added/seeded later on..

```php
$migrations = new Migration_Manager($builder, $wpdb, 'acme_migrations');

$migration_foo = new Migration_Foo();  // Table name = foo_table
$migration_bar = new Migration_Bar();  // Table name = bar_table
$migrations->add_migration($migration_foo);
$migrations->add_migration($migration_bar);

$migrations->seed_tables('bar_table');              // Would only drop foo_table
$migrations->seed_tables('bar_table', 'foo_table'); // Would drop no tables.
```

***

> ## migration_log( ): Migration_Log_Manager   
> `@return PinkCrab\DB_Migration\Log\Migration_Log_Manager` 

Returns access to the [Log Manager](log-manager.md)