Fixed lazy loading users and posts for Favorite

This commit is contained in:
rr- 2015-11-25 11:35:18 +01:00
parent 13d77dd14a
commit ee09a09833
2 changed files with 27 additions and 2 deletions

View file

@ -1,6 +1,8 @@
<?php
namespace Szurubooru\Dao;
use Szurubooru\Dao\EntityConverters\FavoriteEntityConverter;
use Szurubooru\Dao\PostDao;
use Szurubooru\Dao\UserDao;
use Szurubooru\DatabaseConnection;
use Szurubooru\Entities\Entity;
use Szurubooru\Entities\Favorite;
@ -10,10 +12,14 @@ use Szurubooru\Services\TimeService;
class FavoritesDao extends AbstractDao implements ICrudDao
{
private $userDao;
private $postDao;
private $timeService;
public function __construct(
DatabaseConnection $databaseConnection,
UserDao $userDao,
PostDao $postDao,
TimeService $timeService)
{
parent::__construct(
@ -21,6 +27,8 @@ class FavoritesDao extends AbstractDao implements ICrudDao
'favorites',
new FavoriteEntityConverter());
$this->userDao = $userDao;
$this->postDao = $postDao;
$this->timeService = $timeService;
}
@ -58,6 +66,23 @@ class FavoritesDao extends AbstractDao implements ICrudDao
$this->deleteById($favorite->getId());
}
protected function afterLoad(Entity $favorite)
{
$favorite->setLazyLoader(
Favorite::LAZY_LOADER_USER,
function (Favorite $favorite)
{
return $this->userDao->findById($favorite->getUserId());
});
$favorite->setLazyLoader(
Favorite::LAZY_LOADER_POST,
function (Favorite $favorite)
{
return $this->postDao->findById($favorite->getPostId());
});
}
private function get(User $user, Entity $entity)
{
$query = $this->pdo->from($this->tableName)->where('userId', $user->getId());

View file

@ -97,7 +97,7 @@ final class UserServiceTest extends AbstractTestCase
$this->assertNull($savedUser->getEmailUnconfirmed());
$this->assertEquals('hash', $savedUser->getPasswordHash());
$this->assertEquals(User::ACCESS_RANK_REGULAR_USER, $savedUser->getAccessRank());
$this->assertEquals('now', $savedUser->getRegistrationTime());
$this->assertEquals('now', $savedUser->getCreationTime());
$this->assertTrue($savedUser->isAccountConfirmed());
}
@ -130,7 +130,7 @@ final class UserServiceTest extends AbstractTestCase
$this->assertEquals('human@people.gov', $savedUser->getEmailUnconfirmed());
$this->assertEquals('hash', $savedUser->getPasswordHash());
$this->assertEquals(User::ACCESS_RANK_POWER_USER, $savedUser->getAccessRank());
$this->assertEquals('now', $savedUser->getRegistrationTime());
$this->assertEquals('now', $savedUser->getCreationTime());
$this->assertFalse($savedUser->isAccountConfirmed());
}