mirror of
https://github.com/maelgangloff/domain-watchdog.git
synced 2025-12-29 16:15:04 +00:00
refactor: move DQL in repositories
This commit is contained in:
@@ -2,6 +2,7 @@
|
||||
|
||||
namespace App\Repository;
|
||||
|
||||
use App\Entity\Domain;
|
||||
use App\Entity\DomainEntity;
|
||||
use Doctrine\Bundle\DoctrineBundle\Repository\ServiceEntityRepository;
|
||||
use Doctrine\Persistence\ManagerRegistry;
|
||||
@@ -16,6 +17,18 @@ class DomainEntityRepository extends ServiceEntityRepository
|
||||
parent::__construct($registry, DomainEntity::class);
|
||||
}
|
||||
|
||||
public function setDomainEntityAsDeleted(Domain $domain)
|
||||
{
|
||||
return $this->createQueryBuilder('de')
|
||||
->update()
|
||||
->set('de.deletedAt', ':now')
|
||||
->where('de.domain = :domain')
|
||||
->andWhere('de.deletedAt IS NOT NULL')
|
||||
->setParameter('now', new \DateTimeImmutable())
|
||||
->setParameter('domain', $domain)
|
||||
->getQuery()->execute();
|
||||
}
|
||||
|
||||
// /**
|
||||
// * @return DomainEntity[] Returns an array of DomainEntity objects
|
||||
// */
|
||||
|
||||
@@ -2,6 +2,7 @@
|
||||
|
||||
namespace App\Repository;
|
||||
|
||||
use App\Entity\Domain;
|
||||
use App\Entity\DomainEvent;
|
||||
use Doctrine\Bundle\DoctrineBundle\Repository\ServiceEntityRepository;
|
||||
use Doctrine\Persistence\ManagerRegistry;
|
||||
@@ -16,6 +17,45 @@ class DomainEventRepository extends ServiceEntityRepository
|
||||
parent::__construct($registry, DomainEvent::class);
|
||||
}
|
||||
|
||||
public function findLastExpirationDomainEvent(Domain $domain)
|
||||
{
|
||||
return $this->createQueryBuilder('de')
|
||||
->select()
|
||||
->where('de.domain = :domain')
|
||||
->andWhere('de.action = \'expiration\'')
|
||||
->andWhere('de.deleted = FALSE')
|
||||
->orderBy('de.date', 'DESC')
|
||||
->setMaxResults(1)
|
||||
->getQuery()
|
||||
->setParameter('domain', $domain)
|
||||
->getOneOrNullResult();
|
||||
}
|
||||
|
||||
public function findNewDomainEvents(Domain $domain, \DateTimeImmutable $updatedAt)
|
||||
{
|
||||
return $this->createQueryBuilder('de')
|
||||
->select()
|
||||
->where('de.domain = :domain')
|
||||
->andWhere('de.date > :updatedAt')
|
||||
->andWhere('de.date < :now')
|
||||
->setParameter('domain', $domain)
|
||||
->setParameter('updatedAt', $updatedAt)
|
||||
->setParameter('now', new \DateTimeImmutable())
|
||||
->getQuery()->getResult();
|
||||
}
|
||||
|
||||
public function setDomainEventAsDeleted(Domain $domain)
|
||||
{
|
||||
return $this->createQueryBuilder('de')
|
||||
->update()
|
||||
->set('de.deleted', ':deleted')
|
||||
->where('de.domain = :domain')
|
||||
->setParameter('deleted', true)
|
||||
->setParameter('domain', $domain)
|
||||
->getQuery()
|
||||
->execute();
|
||||
}
|
||||
|
||||
// /**
|
||||
// * @return DomainEvent[] Returns an array of DomainEvent objects
|
||||
// */
|
||||
|
||||
@@ -3,6 +3,7 @@
|
||||
namespace App\Repository;
|
||||
|
||||
use App\Entity\Domain;
|
||||
use App\Entity\Tld;
|
||||
use Doctrine\Bundle\DoctrineBundle\Repository\ServiceEntityRepository;
|
||||
use Doctrine\Persistence\ManagerRegistry;
|
||||
|
||||
@@ -27,6 +28,29 @@ class DomainRepository extends ServiceEntityRepository
|
||||
->getResult();
|
||||
}
|
||||
|
||||
public function getActiveDomainCountByTld(): array
|
||||
{
|
||||
return $this->createQueryBuilder('d')
|
||||
->select('t.tld tld')
|
||||
->join('d.tld', 't')
|
||||
->addSelect('COUNT(d.ldhName) AS domain')
|
||||
->addGroupBy('t.tld')
|
||||
->where('d.deleted = FALSE')
|
||||
->orderBy('domain', 'DESC')
|
||||
->setMaxResults(5)
|
||||
->getQuery()->getArrayResult();
|
||||
}
|
||||
|
||||
public function setDomainDeletedIfTldIsDeleted()
|
||||
{
|
||||
return $this->createQueryBuilder('d')
|
||||
->update()
|
||||
->set('d.deleted', ':deleted')
|
||||
->where('d.tld IN (SELECT t FROM '.Tld::class.' t WHERE t.deletedAt IS NOT NULL)')
|
||||
->setParameter('deleted', true)
|
||||
->getQuery()->execute();
|
||||
}
|
||||
|
||||
// /**
|
||||
// * @return Domain[] Returns an array of Domain objects
|
||||
// */
|
||||
|
||||
@@ -2,6 +2,7 @@
|
||||
|
||||
namespace App\Repository;
|
||||
|
||||
use App\Entity\Domain;
|
||||
use App\Entity\DomainStatus;
|
||||
use Doctrine\Bundle\DoctrineBundle\Repository\ServiceEntityRepository;
|
||||
use Doctrine\Persistence\ManagerRegistry;
|
||||
@@ -16,6 +17,19 @@ class DomainStatusRepository extends ServiceEntityRepository
|
||||
parent::__construct($registry, DomainStatus::class);
|
||||
}
|
||||
|
||||
public function findNewDomainStatus(Domain $domain, \DateTimeImmutable $updatedAt)
|
||||
{
|
||||
return $this->createQueryBuilder('ds')
|
||||
->select()
|
||||
->where('ds.domain = :domain')
|
||||
->andWhere('ds.date = :date')
|
||||
->orderBy('ds.createdAt', 'DESC')
|
||||
->setParameter('domain', $domain)
|
||||
->setParameter('date', $updatedAt)
|
||||
->getQuery()
|
||||
->getOneOrNullResult();
|
||||
}
|
||||
|
||||
// /**
|
||||
// * @return DomainStatus[] Returns an array of DomainStatus objects
|
||||
// */
|
||||
|
||||
@@ -28,6 +28,16 @@ class TldRepository extends ServiceEntityRepository
|
||||
->getResult();
|
||||
}
|
||||
|
||||
public function setAllTldAsDeleted()
|
||||
{
|
||||
return $this->createQueryBuilder('t')
|
||||
->update()
|
||||
->set('t.deletedAt', 'COALESCE(t.removalDate, CURRENT_TIMESTAMP())')
|
||||
->where('t.tld != :dot')
|
||||
->setParameter('dot', '.')
|
||||
->getQuery()->execute();
|
||||
}
|
||||
|
||||
// /**
|
||||
// * @return Tld[] Returns an array of Tld objects
|
||||
// */
|
||||
|
||||
@@ -16,6 +16,15 @@ class WatchListRepository extends ServiceEntityRepository
|
||||
parent::__construct($registry, WatchList::class);
|
||||
}
|
||||
|
||||
public function getTrackedDomainCount()
|
||||
{
|
||||
return $this->createQueryBuilder('w')
|
||||
->select('COUNT(DISTINCT d.ldhName)')
|
||||
->join('w.domains', 'd')
|
||||
->where('d.deleted = FALSE')
|
||||
->getQuery()->getSingleScalarResult();
|
||||
}
|
||||
|
||||
// /**
|
||||
// * @return WatchList[] Returns an array of WatchList objects
|
||||
// */
|
||||
|
||||
Reference in New Issue
Block a user