Added support for upgrading and downgrading manually the database via the CLI

This commit is contained in:
Alex Tselegidis 2021-11-06 15:17:03 +01:00
parent 0a88442aa2
commit bcc9b88623
3 changed files with 34 additions and 2 deletions

View file

@ -167,6 +167,8 @@ class Console extends EA_Controller {
'', '',
'⇾ php index.php console migrate', '⇾ php index.php console migrate',
'⇾ php index.php console migrate fresh', '⇾ php index.php console migrate fresh',
'⇾ php index.php console migrate up',
'⇾ php index.php console migrate down',
'⇾ php index.php console seed', '⇾ php index.php console seed',
'⇾ php index.php console install', '⇾ php index.php console install',
'⇾ php index.php console backup', '⇾ php index.php console backup',

View file

@ -42,5 +42,13 @@ require_once __DIR__ . '/../../system/libraries/Migration.php';
* @property EA_URI $uri * @property EA_URI $uri
*/ */
class EA_Migration extends CI_Migration { class EA_Migration extends CI_Migration {
// /**
* Get the current migration version.
*
* @return int
*/
public function current_version(): int
{
return $this->_get_version();
}
} }

View file

@ -45,10 +45,32 @@ class Instance {
/** /**
* Migrate the database to the latest state. * Migrate the database to the latest state.
* *
* @param string $type Provide "fresh" to revert previous migrations and start from the beginning. * @param string $type Provide "fresh" to revert previous migrations and start from the beginning or "up"/"down" to step.
*/ */
public function migrate(string $type = '') public function migrate(string $type = '')
{ {
$current_version = $this->CI->migration->current_version();
if ($type === 'up')
{
if ( ! $this->CI->migration->version($current_version + 1))
{
show_error($this->CI->migration->error_string());
}
return;
}
if ($type === 'down')
{
if ( ! $this->CI->migration->version($current_version - 1))
{
show_error($this->CI->migration->error_string());
}
return;
}
if ($type === 'fresh' && ! $this->CI->migration->version(0)) if ($type === 'fresh' && ! $this->CI->migration->version(0))
{ {
show_error($this->CI->migration->error_string()); show_error($this->CI->migration->error_string());