feat: use domainPurchase to get stats

This commit is contained in:
Maël Gangloff 2025-11-01 18:52:41 +01:00
parent 4f6b8d5b97
commit 29db54ad17
No known key found for this signature in database
GPG Key ID: 11FDC81C24A7F629
4 changed files with 23 additions and 28 deletions

View File

@ -95,7 +95,7 @@ export default function StatisticsPage() {
<Statistic <Statistic
loading={stats === undefined} loading={stats === undefined}
title={t`Success rate`} title={t`Success rate`}
value={successRate === undefined ? '-' : successRate * 100} value={successRate === undefined ? '-' : (successRate * 100).toFixed(2)}
suffix='%' suffix='%'
valueStyle={{color: successRate === undefined ? 'grey' : successRate >= 0.5 ? 'darkgreen' : 'orange'}} valueStyle={{color: successRate === undefined ? 'grey' : successRate >= 0.5 ? 'darkgreen' : 'orange'}}
/> />

View File

@ -3,6 +3,7 @@
namespace App\Controller; namespace App\Controller;
use App\Entity\Statistics; use App\Entity\Statistics;
use App\Repository\DomainPurchaseRepository;
use App\Repository\DomainRepository; use App\Repository\DomainRepository;
use App\Repository\WatchlistRepository; use App\Repository\WatchlistRepository;
use Psr\Cache\CacheItemPoolInterface; use Psr\Cache\CacheItemPoolInterface;
@ -16,6 +17,7 @@ class StatisticsController extends AbstractController
private readonly CacheItemPoolInterface $pool, private readonly CacheItemPoolInterface $pool,
private readonly DomainRepository $domainRepository, private readonly DomainRepository $domainRepository,
private readonly WatchlistRepository $watchlistRepository, private readonly WatchlistRepository $watchlistRepository,
private readonly DomainPurchaseRepository $domainPurchaseRepository,
private readonly KernelInterface $kernel, private readonly KernelInterface $kernel,
) { ) {
} }
@ -29,8 +31,12 @@ class StatisticsController extends AbstractController
$stats $stats
->setRdapQueries($this->pool->getItem('stats.rdap_queries.count')->get() ?? 0) ->setRdapQueries($this->pool->getItem('stats.rdap_queries.count')->get() ?? 0)
->setDomainPurchased($this->pool->getItem('stats.domain.purchased')->get() ?? 0) ->setDomainPurchased(
->setDomainPurchaseFailed($this->pool->getItem('stats.domain.purchase.failed')->get() ?? 0) $this->getCachedItem('stats.domain.purchase', fn () => $this->domainPurchaseRepository->count())
)
->setDomainPurchaseFailed(
$this->getCachedItem('stats.domain.purchase.failed', fn () => $this->domainPurchaseRepository->countFailDomainPurchase())
)
->setAlertSent($this->pool->getItem('stats.alert.sent')->get() ?? 0) ->setAlertSent($this->pool->getItem('stats.alert.sent')->get() ?? 0)
->setDomainTracked( ->setDomainTracked(

View File

@ -109,7 +109,6 @@ final readonly class OrderDomainHandler
'provider' => $connector->getProvider()->value, 'provider' => $connector->getProvider()->value,
]); ]);
$this->statService->incrementStat('stats.domain.purchased');
if ($this->influxdbEnabled) { if ($this->influxdbEnabled) {
$this->influxdbService->addDomainOrderPoint($connector, $domain, true); $this->influxdbService->addDomainOrderPoint($connector, $domain, true);
} }
@ -138,7 +137,6 @@ final readonly class OrderDomainHandler
'provider' => $connector->getProvider()->value, 'provider' => $connector->getProvider()->value,
]); ]);
$this->statService->incrementStat('stats.domain.purchase.failed');
if ($this->influxdbEnabled) { if ($this->influxdbEnabled) {
$this->influxdbService->addDomainOrderPoint($connector, $domain, false); $this->influxdbService->addDomainOrderPoint($connector, $domain, false);
} }

View File

@ -16,28 +16,19 @@ class DomainPurchaseRepository extends ServiceEntityRepository
parent::__construct($registry, DomainPurchase::class); parent::__construct($registry, DomainPurchase::class);
} }
// /** public function countSuccessDomainPurchase(): int
// * @return DomainPurchase[] Returns an array of DomainPurchase objects {
// */ return $this->createQueryBuilder('dp')
// public function findByExampleField($value): array ->select('COUNT(*)')
// { ->where('dp.domainOrderedAt != NULL')
// return $this->createQueryBuilder('d') ->getQuery()->getSingleScalarResult();
// ->andWhere('d.exampleField = :val') }
// ->setParameter('val', $value)
// ->orderBy('d.id', 'ASC')
// ->setMaxResults(10)
// ->getQuery()
// ->getResult()
// ;
// }
// public function findOneBySomeField($value): ?DomainPurchase public function countFailDomainPurchase(): int
// { {
// return $this->createQueryBuilder('d') return $this->createQueryBuilder('dp')
// ->andWhere('d.exampleField = :val') ->select('COUNT(*)')
// ->setParameter('val', $value) ->where('dp.domainOrderedAt == NULL')
// ->getQuery() ->getQuery()->getSingleScalarResult();
// ->getOneOrNullResult() }
// ;
// }
} }