partkeepr

fork of partkeepr
git clone https://git.e1e0.net/partkeepr.git
Log | Files | Refs | Submodules | README | LICENSE

commit cde194e3029cc4ce141e944eb3345d5245fc8038
parent 62f42903cdc8cc73a809ab12a1746b09575bc75b
Author: dromer <1185977+dromer@users.noreply.github.com>
Date:   Sun, 12 Apr 2020 06:44:29 +0200

Merge pull request #1098 from christianlupus/dev/check-mariadb

Added check during setup for Mariadb >= 10.2
Diffstat:
Msrc/PartKeepr/SetupBundle/Controller/SetupController.php | 61+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Mweb/setup/index.html | 1+
Mweb/setup/js/Cards/DatabaseSetupCard.js | 1+
Aweb/setup/js/SetupTests/DatabaseVersionTest.js | 9+++++++++
4 files changed, 72 insertions(+), 0 deletions(-)

diff --git a/src/PartKeepr/SetupBundle/Controller/SetupController.php b/src/PartKeepr/SetupBundle/Controller/SetupController.php @@ -37,6 +37,67 @@ class SetupController extends SetupBaseController } /** + * @Route("/setup/_int_test_dbversion") + */ + public function intTestDBVersionAction(Request $request) + { + if (!$this->ensureAuthKey($request)) { + return $this->getAuthKeyErrorResponse(); + } + + $response = [ + 'success' => true, + 'errors' => [], + 'message' => 'Connection successful', + ]; + + try { + $db = $this->get('doctrine.dbal.default_connection'); + $db->connect(); + } catch (DriverException $e) { + $response['success'] = false; + $response['message'] = 'Connection Error'; + $response['errors'] = [$e->getMessage()]; + + return new JsonResponse($response); + } + + $retArr = $db->fetchArray("SELECT version();"); + $version = $retArr[0]; + + if (preg_match('/^([0-9]*)\.([0-9]*)\.([0-9]*)-mariadb.*/i', $version, $matches)) { + // We are running mariadb. This could cause problems. + $major = $matches[1]; + $minor = $matches[2]; + if ($major == 10 && $minor >= 2) { + $response['success'] = false; + $response['message'] = 'Incompatible MariaDB version'; + $response['errors'] = ['Current dependency Symfony is incompatible with MariaDB >= 10.2.']; + + return new JsonResponse($response); + } + } + + return new JsonResponse($response); + } + + /** + * @Route("/setup/testDBVersion") + * + * @param Request $request + * + * @return Response + */ + public function testDBVersionAction(Request $request) + { + $this->dumpConfig($request); + + $response = $this->handleRequest($request, '/setup/_int_test_dbversion'); + + return new Response($response->getContent()); + } + + /** * @Route("/setup/testConnectivity") * * @param Request $request diff --git a/web/setup/index.html b/web/setup/index.html @@ -40,6 +40,7 @@ <script type="text/javascript" src="js/SetupTests/WebserverRewriteTest.js"></script> <script type="text/javascript" src="js/SetupTests/PHPPrerequisitesTest.js"></script> <script type="text/javascript" src="js/SetupTests/DatabaseConnectivityTest.js"></script> + <script type="text/javascript" src="js/SetupTests/DatabaseVersionTest.js"></script> <script type="text/javascript" src="js/SetupTests/PHPSettingsTest.js"></script> <script type="text/javascript" src="js/SetupTests/ExistingConfigurationTest.js"></script> <script type="text/javascript" src="js/SetupTests/ExistingUserTest.js"></script> diff --git a/web/setup/js/Cards/DatabaseSetupCard.js b/web/setup/js/Cards/DatabaseSetupCard.js @@ -16,6 +16,7 @@ Ext.define('PartKeeprSetup.DatabaseSetupCard', { setupTests: function () { this.tests.push(new PartKeeprSetup.DatabaseConnectivityTest()); + this.tests.push(new PartKeeprSetup.DatabaseVersionTest()); this.tests.push(new PartKeeprSetup.SchemaSetup()); this.tests.push(new PartKeeprSetup.SchemaMigration()); this.tests.push(new PartKeeprSetup.PartUnitSetup()); diff --git a/web/setup/js/SetupTests/DatabaseVersionTest.js b/web/setup/js/SetupTests/DatabaseVersionTest.js @@ -0,0 +1,9 @@ +/** + * Tests if the database can be reached + */ +Ext.define('PartKeeprSetup.DatabaseVersionTest', { + extend: 'PartKeeprSetup.AbstractTest', + action: 'testDBVersion', + name: "Database", + message: "Testing for valid database version", +});