From a21dcb852a7e75d4942d6eaf5ad8260e94f815f2 Mon Sep 17 00:00:00 2001 From: Alejandro Celaya Date: Wed, 14 Jun 2023 18:08:39 +0200 Subject: [PATCH] Fix Shlink trying to create SQLite database tables even if they already exist --- .github/workflows/publish-swagger-spec.yml | 2 +- CHANGELOG.md | 17 +++++++++++++++++ composer.json | 2 +- .../src/Command/Db/CreateDatabaseCommand.php | 5 ----- .../Command/Db/CreateDatabaseCommandTest.php | 15 --------------- 5 files changed, 19 insertions(+), 22 deletions(-) diff --git a/.github/workflows/publish-swagger-spec.yml b/.github/workflows/publish-swagger-spec.yml index f7be6502c..06b335662 100644 --- a/.github/workflows/publish-swagger-spec.yml +++ b/.github/workflows/publish-swagger-spec.yml @@ -26,7 +26,7 @@ jobs: - run: mkdir ${{ steps.determine_version.outputs.version }} - run: mv docs/swagger/swagger-inlined.json ${{ steps.determine_version.outputs.version }}/open-api-spec.json - name: Publish spec - uses: JamesIves/github-pages-deploy-action@4 + uses: JamesIves/github-pages-deploy-action@4.4.1 with: token: ${{ secrets.OAS_PUBLISH_TOKEN }} repository-name: 'shlinkio/shlink-open-api-specs' diff --git a/CHANGELOG.md b/CHANGELOG.md index 0abea5624..441255339 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,6 +4,23 @@ All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com), and this project adheres to [Semantic Versioning](https://semver.org). +## [3.6.3] - 2023-06-14 +### Added +* *Nothing* + +### Changed +* *Nothing* + +### Deprecated +* *Nothing* + +### Removed +* *Nothing* + +### Fixed +* [#1817](https://github.com/shlinkio/shlink/issues/1817) Fix Shlink trying to create SQLite database tables even if they already exist. + + ## [3.6.2] - 2023-06-08 ### Added * *Nothing* diff --git a/composer.json b/composer.json index 7593481b2..98ce47eba 100644 --- a/composer.json +++ b/composer.json @@ -75,7 +75,7 @@ "phpunit/phpunit": "~10.1.0", "roave/security-advisories": "dev-master", "shlinkio/php-coding-standard": "~2.3.0", - "shlinkio/shlink-test-utils": "^3.6", + "shlinkio/shlink-test-utils": "~3.6.0", "symfony/var-dumper": "^6.2", "veewee/composer-run-parallel": "^1.2" }, diff --git a/module/CLI/src/Command/Db/CreateDatabaseCommand.php b/module/CLI/src/Command/Db/CreateDatabaseCommand.php index 0fd1b18cf..129db1e0b 100644 --- a/module/CLI/src/Command/Db/CreateDatabaseCommand.php +++ b/module/CLI/src/Command/Db/CreateDatabaseCommand.php @@ -5,7 +5,6 @@ namespace Shlinkio\Shlink\CLI\Command\Db; use Doctrine\DBAL\Connection; -use Doctrine\DBAL\Platforms\SqlitePlatform; use Doctrine\ORM\EntityManagerInterface; use Doctrine\ORM\Mapping\ClassMetadata; use Shlinkio\Shlink\CLI\Util\ExitCode; @@ -80,10 +79,6 @@ private function databaseTablesExist(): bool private function ensureDatabaseExistsAndGetTables(): array { - if ($this->regularConn->getDriver()->getDatabasePlatform() instanceof SqlitePlatform) { - return []; - } - try { // Trying to list tables requires opening a connection to configured database. // If it fails, it means it does not exist yet. diff --git a/module/CLI/test/Command/Db/CreateDatabaseCommandTest.php b/module/CLI/test/Command/Db/CreateDatabaseCommandTest.php index 66f46db49..420ea91db 100644 --- a/module/CLI/test/Command/Db/CreateDatabaseCommandTest.php +++ b/module/CLI/test/Command/Db/CreateDatabaseCommandTest.php @@ -7,7 +7,6 @@ use Doctrine\DBAL\Connection; use Doctrine\DBAL\Driver; use Doctrine\DBAL\Platforms\AbstractPlatform; -use Doctrine\DBAL\Platforms\SqlitePlatform; use Doctrine\DBAL\Schema\AbstractSchemaManager; use Doctrine\ORM\EntityManagerInterface; use Doctrine\ORM\Mapping\ClassMetadata; @@ -129,18 +128,4 @@ public static function provideEmptyDatabase(): iterable yield 'no tables' => [[]]; yield 'migrations table' => [['non_shlink_table']]; } - - #[Test] - public function databaseCheckIsSkippedForSqlite(): void - { - $this->driver->method('getDatabasePlatform')->willReturn($this->createMock(SqlitePlatform::class)); - $this->regularConn->expects($this->never())->method('getParams'); - $this->schemaManager->expects($this->never())->method('listDatabases'); - $this->schemaManager->expects($this->never())->method('createDatabase'); - $this->schemaManager->expects($this->never())->method('listTableNames'); - - $this->metadataFactory->expects($this->once())->method('getAllMetadata')->willReturn([]); - - $this->commandTester->execute([]); - } }