feat: suite du passage en DDD de Scraping
This commit is contained in:
committed by
ThysTips
parent
0c8ca6cca9
commit
0a8e6786a8
@@ -3,7 +3,9 @@
|
||||
namespace App\Domain\Scraping\Infrastructure\Persistence;
|
||||
|
||||
use App\Domain\Scraping\Domain\Model\ScrapingJob;
|
||||
use App\Domain\Scraping\Domain\Model\ScrapingStatus;
|
||||
use App\Domain\Scraping\Domain\Repository\ScrapingJobRepositoryInterface;
|
||||
use App\Domain\Scraping\Infrastructure\Persistence\Entity\ScrapingJobEntity;
|
||||
use Doctrine\ORM\EntityManagerInterface;
|
||||
|
||||
class DoctrineScrapingJobRepository implements ScrapingJobRepositoryInterface
|
||||
@@ -14,38 +16,48 @@ class DoctrineScrapingJobRepository implements ScrapingJobRepositoryInterface
|
||||
|
||||
public function save(ScrapingJob $job): void
|
||||
{
|
||||
$this->entityManager->persist($job);
|
||||
$entity = ScrapingJobEntity::fromDomain($job);
|
||||
$this->entityManager->persist($entity);
|
||||
$this->entityManager->flush();
|
||||
}
|
||||
|
||||
public function findById(string $id): ?ScrapingJob
|
||||
{
|
||||
return $this->entityManager->getRepository(ScrapingJob::class)->find($id);
|
||||
$entity = $this->entityManager->getRepository(ScrapingJobEntity::class)
|
||||
->find($id);
|
||||
|
||||
return $entity?->toDomain();
|
||||
}
|
||||
|
||||
public function findByChapterId(string $chapterId): ?ScrapingJob
|
||||
{
|
||||
return $this->entityManager->getRepository(ScrapingJob::class)
|
||||
$entity = $this->entityManager->getRepository(ScrapingJobEntity::class)
|
||||
->findOneBy(['chapterId' => $chapterId]);
|
||||
|
||||
return $entity?->toDomain();
|
||||
}
|
||||
|
||||
public function findPendingJobs(): array
|
||||
{
|
||||
return $this->entityManager->getRepository(ScrapingJob::class)
|
||||
$entities = $this->entityManager->getRepository(ScrapingJobEntity::class)
|
||||
->createQueryBuilder('sj')
|
||||
->where('sj.status = :status')
|
||||
->setParameter('status', 'pending')
|
||||
->setParameter('status', ScrapingStatus::PENDING->value)
|
||||
->getQuery()
|
||||
->getResult();
|
||||
|
||||
return array_map(fn(ScrapingJobEntity $entity) => $entity->toDomain(), $entities);
|
||||
}
|
||||
|
||||
public function findInProgressJobs(): array
|
||||
{
|
||||
return $this->entityManager->getRepository(ScrapingJob::class)
|
||||
$entities = $this->entityManager->getRepository(ScrapingJobEntity::class)
|
||||
->createQueryBuilder('sj')
|
||||
->where('sj.status = :status')
|
||||
->setParameter('status', 'in_progress')
|
||||
->setParameter('status', ScrapingStatus::IN_PROGRESS->value)
|
||||
->getQuery()
|
||||
->getResult();
|
||||
|
||||
return array_map(fn(ScrapingJobEntity $entity) => $entity->toDomain(), $entities);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user