feat: debut rerefonte DDD CQRS

This commit is contained in:
ext.jeremy.guillot@maxicoffee.domains
2025-01-31 19:23:02 +01:00
committed by ThysTips
parent 8f7b5d71c5
commit 0c8ca6cca9
16 changed files with 483 additions and 1 deletions

View File

@@ -0,0 +1,51 @@
<?php
namespace App\Domain\Scraping\Infrastructure\Persistence;
use App\Domain\Scraping\Domain\Model\ScrapingJob;
use App\Domain\Scraping\Domain\Repository\ScrapingJobRepositoryInterface;
use Doctrine\ORM\EntityManagerInterface;
class DoctrineScrapingJobRepository implements ScrapingJobRepositoryInterface
{
public function __construct(
private readonly EntityManagerInterface $entityManager
) {}
public function save(ScrapingJob $job): void
{
$this->entityManager->persist($job);
$this->entityManager->flush();
}
public function findById(string $id): ?ScrapingJob
{
return $this->entityManager->getRepository(ScrapingJob::class)->find($id);
}
public function findByChapterId(string $chapterId): ?ScrapingJob
{
return $this->entityManager->getRepository(ScrapingJob::class)
->findOneBy(['chapterId' => $chapterId]);
}
public function findPendingJobs(): array
{
return $this->entityManager->getRepository(ScrapingJob::class)
->createQueryBuilder('sj')
->where('sj.status = :status')
->setParameter('status', 'pending')
->getQuery()
->getResult();
}
public function findInProgressJobs(): array
{
return $this->entityManager->getRepository(ScrapingJob::class)
->createQueryBuilder('sj')
->where('sj.status = :status')
->setParameter('status', 'in_progress')
->getQuery()
->getResult();
}
}