diff --git a/src/Config.php b/src/Config.php new file mode 100644 index 00000000..a0329f45 --- /dev/null +++ b/src/Config.php @@ -0,0 +1,6 @@ +db = $mongoDb; - $this->collection = $mongoDb->selectCollection($collectionName); + $this->db = (new \Szurubooru\DatabaseConnection($config))->getDatabase(); + $this->collection = $this->db->selectCollection($collectionName); $this->entityName = $entityName; } diff --git a/src/Dao/PostDao.php b/src/Dao/PostDao.php index 8d19e28a..d64019a1 100644 --- a/src/Dao/PostDao.php +++ b/src/Dao/PostDao.php @@ -3,8 +3,8 @@ namespace Szurubooru\Dao; final class PostDao extends AbstractDao implements ICrudDao { - public function __construct(\MongoDB $mongoDb) + public function __construct(\Szurubooru\Config $config) { - parent::__construct($mongoDb, 'posts', '\Szurubooru\Entities\Post'); + parent::__construct($config, 'posts', '\Szurubooru\Entities\Post'); } } diff --git a/src/DatabaseConnection.php b/src/DatabaseConnection.php new file mode 100644 index 00000000..e5e8e2a8 --- /dev/null +++ b/src/DatabaseConnection.php @@ -0,0 +1,34 @@ +getConnectionString($config); + $this->connection = new \MongoClient($connectionString); + $this->database = $this->connection->selectDb($config->databaseName); + } + + public function getConnection() + { + return $this->connection; + } + + public function getDatabase() + { + return $this->database; + } + + private function getConnectionString(\Szurubooru\Config $config) + { + return sprintf( + 'mongodb://%s:%d/%s', + $config->databaseHost, + $config->databasePort, + $config->databaseName); + } +} diff --git a/src/UpgradeService.php b/src/UpgradeService.php index b563cb7e..fa21e03b 100644 --- a/src/UpgradeService.php +++ b/src/UpgradeService.php @@ -5,9 +5,9 @@ final class UpgradeService { private $db; - public function __construct(\MongoDB $db) + public function __construct(\Szurubooru\Config $config) { - $this->db = $db; + $this->db = (new DatabaseConnection($config))->getDatabase(); } public function prepareForUsage() diff --git a/tests/AbstractDatabaseTest.php b/tests/AbstractDatabaseTest.php index b6399ed8..4fad63d2 100644 --- a/tests/AbstractDatabaseTest.php +++ b/tests/AbstractDatabaseTest.php @@ -12,10 +12,11 @@ abstract class AbstractDatabaseTest extends \PHPUnit_Framework_TestCase $host = 'localhost'; $port = 27017; $database = 'test'; - $connectingString = sprintf('mongodb://%s:%d/%s', $host, $port, $database); - $this->connection = new \Mongo($connectingString); - $this->db = $this->connection->selectDb($database); - $this->upgradeService = new \Szurubooru\UpgradeService($this->db); + $this->config = new \Szurubooru\Config(); + $this->config->databaseHost = 'localhost'; + $this->config->databasePort = 27017; + $this->config->databaseName = 'test'; + $this->upgradeService = new \Szurubooru\UpgradeService($this->config); $this->upgradeService->prepareForUsage(); } diff --git a/tests/Dao/PostDaoTest.php b/tests/Dao/PostDaoTest.php index cc63fa38..fb53a2e7 100644 --- a/tests/Dao/PostDaoTest.php +++ b/tests/Dao/PostDaoTest.php @@ -5,7 +5,7 @@ final class PostDaoTest extends \Szurubooru\Tests\AbstractDatabaseTest { public function testSaving() { - $postDao = new \Szurubooru\Dao\PostDao($this->db); + $postDao = new \Szurubooru\Dao\PostDao($this->config); $post = new \Szurubooru\Entities\Post(); $post->name = 'test2'; @@ -24,7 +24,7 @@ final class PostDaoTest extends \Szurubooru\Tests\AbstractDatabaseTest public function testGettingAll() { - $postDao = new \Szurubooru\Dao\PostDao($this->db); + $postDao = new \Szurubooru\Dao\PostDao($this->config); $post1 = new \Szurubooru\Entities\Post(); $post1->name = 'test2'; @@ -45,7 +45,7 @@ final class PostDaoTest extends \Szurubooru\Tests\AbstractDatabaseTest public function testGettingById() { - $postDao = new \Szurubooru\Dao\PostDao($this->db); + $postDao = new \Szurubooru\Dao\PostDao($this->config); $post1 = new \Szurubooru\Entities\Post(); $post1->name = 'test2'; @@ -63,7 +63,7 @@ final class PostDaoTest extends \Szurubooru\Tests\AbstractDatabaseTest public function testDeletingAll() { - $postDao = new \Szurubooru\Dao\PostDao($this->db); + $postDao = new \Szurubooru\Dao\PostDao($this->config); $post1 = new \Szurubooru\Entities\Post(); $post1->name = 'test2'; @@ -84,7 +84,7 @@ final class PostDaoTest extends \Szurubooru\Tests\AbstractDatabaseTest public function testDeletingById() { - $postDao = new \Szurubooru\Dao\PostDao($this->db); + $postDao = new \Szurubooru\Dao\PostDao($this->config); $post1 = new \Szurubooru\Entities\Post(); $post1->name = 'test2';