Fixed lazy loading users and posts for Favorite
This commit is contained in:
parent
13d77dd14a
commit
ee09a09833
2 changed files with 27 additions and 2 deletions
|
@ -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());
|
||||
|
|
|
@ -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());
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in a new issue