entityManager->persist($entity); $this->entityManager->flush(); } public function findById(string $id): ?ScrapingJob { $entity = $this->entityManager->getRepository(ScrapingJobEntity::class) ->find($id); return $entity?->toDomain(); } public function findByChapterId(string $chapterId): ?ScrapingJob { $entity = $this->entityManager->getRepository(ScrapingJobEntity::class) ->findOneBy(['chapterId' => $chapterId]); return $entity?->toDomain(); } public function findPendingJobs(): array { $entities = $this->entityManager->getRepository(ScrapingJobEntity::class) ->createQueryBuilder('sj') ->where('sj.status = :status') ->setParameter('status', ScrapingStatus::PENDING->value) ->getQuery() ->getResult(); return array_map(fn (ScrapingJobEntity $entity) => $entity->toDomain(), $entities); } public function findInProgressJobs(): array { $entities = $this->entityManager->getRepository(ScrapingJobEntity::class) ->createQueryBuilder('sj') ->where('sj.status = :status') ->setParameter('status', ScrapingStatus::IN_PROGRESS->value) ->getQuery() ->getResult(); return array_map(fn (ScrapingJobEntity $entity) => $entity->toDomain(), $entities); } }