Allow to check the schema in pre and post as well

Signed-off-by: Joas Schilling <coding@schilljs.com>
This commit is contained in:
Joas Schilling 2017-06-07 13:51:54 +02:00 committed by Morris Jobke
parent 817783e4c7
commit 5d9d1b1cb5
4 changed files with 34 additions and 15 deletions

View File

@ -51,26 +51,31 @@ class <classname> extends SimpleMigrationStep {
/** /**
* @param IOutput $output * @param IOutput $output
* @param \Closure $schemaClosure The `\Closure` returns a `Schema`
* @param array $options
* @since 13.0.0 * @since 13.0.0
*/ */
public function preSchemaChange(IOutput $output) { public function preSchemaChange(IOutput $output, \Closure $schemaClosure, array $options) {
} }
/** /**
* @param \Closure $schema The `\Closure` returns a `Schema` * @param IOutput $output
* @param \Closure $schemaClosure The `\Closure` returns a `Schema`
* @param array $options * @param array $options
* @return null|Schema * @return null|Schema
* @since 13.0.0 * @since 13.0.0
*/ */
public function changeSchema(\Closure $schema, array $options) { public function changeSchema(IOutput $output, \Closure $schemaClosure, array $options) {
return null; return null;
} }
/** /**
* @param IOutput $output * @param IOutput $output
* @param \Closure $schemaClosure The `\Closure` returns a `Schema`
* @param array $options
* @since 13.0.0 * @since 13.0.0
*/ */
public function postSchemaChange(IOutput $output) { public function postSchemaChange(IOutput $output, \Closure $schemaClosure, array $options) {
} }
} }
'; ';

View File

@ -390,9 +390,11 @@ class MigrationService {
throw new \InvalidArgumentException('Not a valid migration'); throw new \InvalidArgumentException('Not a valid migration');
} }
$instance->preSchemaChange($this->output); $instance->preSchemaChange($this->output, function() {
return $this->connection->createSchema();
}, ['tablePrefix' => $this->connection->getPrefix()]);
$toSchema = $instance->changeSchema(function() { $toSchema = $instance->changeSchema($this->output, function() {
return $this->connection->createSchema(); return $this->connection->createSchema();
}, ['tablePrefix' => $this->connection->getPrefix()]); }, ['tablePrefix' => $this->connection->getPrefix()]);
@ -400,7 +402,9 @@ class MigrationService {
$this->connection->migrateToSchema($toSchema); $this->connection->migrateToSchema($toSchema);
} }
$instance->postSchemaChange($this->output); $instance->postSchemaChange($this->output, function() {
return $this->connection->createSchema();
}, ['tablePrefix' => $this->connection->getPrefix()]);
$this->markAsExecuted($version); $this->markAsExecuted($version);
} }

View File

@ -30,21 +30,26 @@ interface IMigrationStep {
/** /**
* @param IOutput $output * @param IOutput $output
* @param \Closure $schemaClosure The `\Closure` returns a `Schema`
* @param array $options
* @since 13.0.0 * @since 13.0.0
*/ */
public function preSchemaChange(IOutput $output); public function preSchemaChange(IOutput $output, \Closure $schemaClosure, array $options);
/** /**
* @param \Closure $schema The `\Closure` returns a `Schema` * @param IOutput $output
* @param \Closure $schemaClosure The `\Closure` returns a `Schema`
* @param array $options * @param array $options
* @return null|Schema * @return null|Schema
* @since 13.0.0 * @since 13.0.0
*/ */
public function changeSchema(\Closure $schema, array $options); public function changeSchema(IOutput $output, \Closure $schemaClosure, array $options);
/** /**
* @param IOutput $output * @param IOutput $output
* @param \Closure $schemaClosure The `\Closure` returns a `Schema`
* @param array $options
* @since 13.0.0 * @since 13.0.0
*/ */
public function postSchemaChange(IOutput $output); public function postSchemaChange(IOutput $output, \Closure $schemaClosure, array $options);
} }

View File

@ -30,25 +30,30 @@ abstract class SimpleMigrationStep implements IMigrationStep {
/** /**
* @param IOutput $output * @param IOutput $output
* @param \Closure $schemaClosure The `\Closure` returns a `Schema`
* @param array $options
* @since 13.0.0 * @since 13.0.0
*/ */
public function preSchemaChange(IOutput $output) { public function preSchemaChange(IOutput $output, \Closure $schemaClosure, array $options) {
} }
/** /**
* @param \Closure $schema * @param IOutput $output
* @param \Closure $schemaClosure The `\Closure` returns a `Schema`
* @param array $options * @param array $options
* @return null|Schema * @return null|Schema
* @since 13.0.0 * @since 13.0.0
*/ */
public function changeSchema(\Closure $schema, array $options) { public function changeSchema(IOutput $output, \Closure $schemaClosure, array $options) {
return null; return null;
} }
/** /**
* @param IOutput $output * @param IOutput $output
* @param \Closure $schemaClosure The `\Closure` returns a `Schema`
* @param array $options
* @since 13.0.0 * @since 13.0.0
*/ */
public function postSchemaChange(IOutput $output) { public function postSchemaChange(IOutput $output, \Closure $schemaClosure, array $options) {
} }
} }