diff --git a/packages/auth/src/Installer/AuthenticationInstaller.php b/packages/auth/src/Installer/AuthenticationInstaller.php index d80395421..863df8d0f 100644 --- a/packages/auth/src/Installer/AuthenticationInstaller.php +++ b/packages/auth/src/Installer/AuthenticationInstaller.php @@ -9,6 +9,7 @@ use Tempest\Container\Container; use Tempest\Core\Installer; use Tempest\Core\PublishesFiles; +use Tempest\Database\Migrations\CreateMigrationsTable; use Tempest\Database\Migrations\MigrationManager; use function Tempest\root_path; @@ -36,6 +37,10 @@ public function install(): void $this->publishImports(); if ($migration && $this->shouldMigrate()) { + if (! $this->migrationManager->doesMigrationsTableExist()) { + $this->migrationManager->executeUp(new CreateMigrationsTable()); + } + $this->migrationManager->executeUp( migration: $this->container->get(to_fqcn($migration, root: root_path())), ); diff --git a/packages/database/src/Migrations/MigrationManager.php b/packages/database/src/Migrations/MigrationManager.php index 1e1b43b62..3921700a9 100644 --- a/packages/database/src/Migrations/MigrationManager.php +++ b/packages/database/src/Migrations/MigrationManager.php @@ -287,6 +287,23 @@ public function executeDown(MigratesDown $migration): void event(new MigrationRolledBack($migration->name)); } + public function doesMigrationsTableExist(): bool + { + try { + Migration::select() + ->onDatabase($this->onDatabase) + ->limit(1) + ->all(); + } catch (QueryWasInvalid $exception) { + if ($this->dialect->isTableNotFoundError($exception)) { + return false; + } else { + throw $exception; + } + } + return true; + } + /** * @return \Tempest\Database\Migrations\TableMigrationDefinition[] */