From 601cb68d0fcff88204846beb202ae61a9603898e Mon Sep 17 00:00:00 2001 From: William Desportes Date: Sat, 23 Mar 2024 21:03:03 +0100 Subject: [PATCH] feat: implement Aurora MySQL --- src/Search.php | 24 +++++++++++++------ src/SlimData.php | 6 +++-- test/SearchTest.php | 23 +++++++++++++++++- test/SlimDataTest.php | 2 +- test/data/ultraSlimDataTestWithVariables.json | 5 ++-- 5 files changed, 47 insertions(+), 13 deletions(-) diff --git a/src/Search.php b/src/Search.php index 7896a240..b11f0cac 100644 --- a/src/Search.php +++ b/src/Search.php @@ -22,10 +22,11 @@ class Search */ public static $loaded = false; - public const ANY = -1; - public const MYSQL = 1; - public const MARIADB = 2; - public const DS = DIRECTORY_SEPARATOR; + public const ANY = -1; + public const MYSQL = 1; + public const MARIADB = 2; + public const AURORA_MYSQL = 3; + public const DS = DIRECTORY_SEPARATOR; /** * The directory where the data is located @@ -90,15 +91,24 @@ public static function getByName(string $name, int $type = Search::ANY): string $kbEntries = self::getVariable($name); if (isset($kbEntries->a)) { foreach ($kbEntries->a as $kbEntry) { + $urlEnd = isset($kbEntry->a) ? '#' . $kbEntry->a : ''; + if ($type === Search::ANY) { - return Search::$data->urls[$kbEntry->u] . '#' . $kbEntry->a; + return Search::$data->urls[$kbEntry->u] . $urlEnd; } elseif ($type === Search::MYSQL) { if ($kbEntry->t === Search::MYSQL) { - return Search::$data->urls[$kbEntry->u] . '#' . $kbEntry->a; + return Search::$data->urls[$kbEntry->u] . $urlEnd; + } + if ($kbEntry->t === Search::AURORA_MYSQL) { + return Search::$data->urls[$kbEntry->u] . $urlEnd; } } elseif ($type === Search::MARIADB) { if ($kbEntry->t === Search::MARIADB) { - return Search::$data->urls[$kbEntry->u] . '#' . $kbEntry->a; + return Search::$data->urls[$kbEntry->u] . $urlEnd; + } + } elseif ($type === Search::AURORA_MYSQL) { + if ($kbEntry->t === Search::AURORA_MYSQL) { + return Search::$data->urls[$kbEntry->u] . $urlEnd; } } } diff --git a/src/SlimData.php b/src/SlimData.php index 21f77a52..388f2d59 100644 --- a/src/SlimData.php +++ b/src/SlimData.php @@ -129,10 +129,12 @@ public function jsonSerialize(): array if ($entry->a === null) { unset($entry->a); } - if (preg_match('!^(https|http)://mariadb.com!', $kbd->getUrl())) { + if (preg_match('!^https://mariadb.com!', $kbd->getUrl())) { $entry->t = $this->types['MARIADB']; - } elseif (preg_match('!^(https|http)://dev.mysql.com!', $kbd->getUrl())) { + } elseif (preg_match('!^https://dev.mysql.com!', $kbd->getUrl())) { $entry->t = $this->types['MYSQL']; + } elseif (preg_match('!^https://docs.aws.amazon.com!', $kbd->getUrl())) { + $entry->t = $this->types['AURORA-MYSQL']; } if (isset($entry->t)) {// If has no valid type, skip. //Do not allow other urls. diff --git a/test/SearchTest.php b/test/SearchTest.php index 35c23c9a..3b4118b0 100644 --- a/test/SearchTest.php +++ b/test/SearchTest.php @@ -26,6 +26,9 @@ public static function setUpBeforeClass(): void $variable4 = $sd->addVariable('variable-4', null, false); $variable4->addDocumentation('https://mariadb.com/testurl/for/variable/4', 'myanchor'); $variable4->addDocumentation('https://dev.mysql.com/testurl_for-variable/4', 'my_anchor'); + $variable5 = $sd->addVariable('variable-5', null, false); + $variable5->addDocumentation('https://docs.aws.amazon.com/testurl/for/variable/5#myanchor', null); + Search::loadTestData($sd); } @@ -51,6 +54,24 @@ public function testGetByNameMYSQL(): void $this->assertEquals('https://dev.mysql.com/testurl_for-variable/4#my_anchor', $found); } + /** + * test get by name for Aurora MySQL + */ + public function testGetByNameMYSQLAurora(): void + { + $found = Search::getByName('variable-5', Search::AURORA_MYSQL); + $this->assertEquals('https://docs.aws.amazon.com/testurl/for/variable/5#myanchor', $found); + } + + /** + * test get by name for Aurora MySQL but the engine is MYSQL + */ + public function testGetByNameMYSQLAuroraEngineMySQL(): void + { + $found = Search::getByName('variable-5', Search::MYSQL); + $this->assertEquals('https://docs.aws.amazon.com/testurl/for/variable/5#myanchor', $found); + } + /** * test get by name for MARIADB * @@ -151,7 +172,7 @@ public function testGetVariablesWithDynamic(): void $static = Search::getVariablesWithDynamic(false); $this->assertEquals($static, Search::getStaticVariables()); $this->assertEquals(2, count($dynamic)); - $this->assertEquals(1, count($static)); + $this->assertEquals(2, count($static)); $common = \array_intersect($dynamic, $static); $this->assertEquals(0, count($common));// Impossible to be dynamic and not } diff --git a/test/SlimDataTest.php b/test/SlimDataTest.php index 47b96a2b..d66e6964 100644 --- a/test/SlimDataTest.php +++ b/test/SlimDataTest.php @@ -31,7 +31,7 @@ public function testCreateInstance(): SlimData */ public function testToJsonEmpty(SlimData $slimData): void { - $this->assertEquals('{"version":1}', json_encode($slimData)); + $this->assertEquals('{"version":2}', json_encode($slimData)); } /** diff --git a/test/data/ultraSlimDataTestWithVariables.json b/test/data/ultraSlimDataTestWithVariables.json index 1294c9e5..609e9ec9 100644 --- a/test/data/ultraSlimDataTestWithVariables.json +++ b/test/data/ultraSlimDataTestWithVariables.json @@ -28,10 +28,11 @@ ] } }, - "version": 1, + "version": 2, "types": { "1": "MYSQL", - "2": "MARIADB" + "2": "MARIADB", + "3": "AURORA-MYSQL" }, "varTypes": { "1": "string",