diff options
Diffstat (limited to 'app/ServiceProvider/DatabaseProvider.php')
-rw-r--r-- | app/ServiceProvider/DatabaseProvider.php | 41 |
1 files changed, 36 insertions, 5 deletions
diff --git a/app/ServiceProvider/DatabaseProvider.php b/app/ServiceProvider/DatabaseProvider.php index a3f57457..9998ac43 100644 --- a/app/ServiceProvider/DatabaseProvider.php +++ b/app/ServiceProvider/DatabaseProvider.php @@ -27,6 +27,10 @@ class DatabaseProvider implements ServiceProviderInterface { $container['db'] = $this->getInstance(); + if (DB_RUN_MIGRATIONS) { + self::runMigrations($container['db']); + } + if (DEBUG) { $container['db']->getStatementHandler() ->withLogging() @@ -38,7 +42,7 @@ class DatabaseProvider implements ServiceProviderInterface } /** - * Setup the database driver and execute schema migration + * Setup the database driver * * @access public * @return \PicoDb\Database @@ -59,12 +63,39 @@ class DatabaseProvider implements ServiceProviderInterface throw new LogicException('Database driver not supported'); } - if ($db->schema()->check(\Schema\VERSION)) { - return $db; - } else { + return $db; + } + + /** + * Get current database version + * + * @static + * @access public + * @param Database $db + * @return int + */ + public static function getSchemaVersion(Database $db) + { + return $db->getDriver()->getSchemaVersion(); + } + + /** + * Execute database migrations + * + * @static + * @access public + * @throws RuntimeException + * @param Database $db + * @return bool + */ + public static function runMigrations(Database $db) + { + if (! $db->schema()->check(\Schema\VERSION)) { $messages = $db->getLogMessages(); throw new RuntimeException('Unable to run SQL migrations: '.implode(', ', $messages).' (You may have to fix it manually)'); } + + return true; } /** @@ -79,7 +110,7 @@ class DatabaseProvider implements ServiceProviderInterface return new Database(array( 'driver' => 'sqlite', - 'filename' => DB_FILENAME + 'filename' => DB_FILENAME, )); } |