Browse Source

Make doctrine repos into services

Jordi Boggiano 5 years ago
parent
commit
e2b7fbbaca

+ 6 - 0
app/config/config_test.yml

@@ -16,3 +16,9 @@ web_profiler:
 
 swiftmailer:
     disable_delivery: true
+
+services:
+
+    test.user_repo:
+        alias: Packagist\WebBundle\Entity\UserRepository
+        public: true

+ 2 - 2
src/Packagist/WebBundle/Controller/ApiController.php

@@ -288,7 +288,7 @@ class ApiController extends Controller
         if ($match['host'] === 'github.com' && $request->getContent() && $request->query->has('username') && $request->headers->has('X-Hub-Signature')) {
             $username = $request->query->get('username');
             $sig = $request->headers->get('X-Hub-Signature');
-            $user = $this->get('packagist.user_repository')->findOneByUsername($username);
+            $user = $this->getDoctrine()->getRepository(User::class)->findOneByUsername($username);
             if ($sig && $user && $user->isEnabled()) {
                 list($algo, $sig) = explode('=', $sig);
                 $expected = hash_hmac($algo, $request->getContent(), $user->getApiToken());
@@ -370,7 +370,7 @@ class ApiController extends Controller
             return null;
         }
 
-        $user = $this->get('packagist.user_repository')
+        $user = $this->getDoctrine()->getRepository(User::class)
             ->findOneBy(array('username' => $username, 'apiToken' => $apiToken));
 
         if ($user && !$user->isEnabled()) {

+ 2 - 1
src/Packagist/WebBundle/Controller/ExploreController.php

@@ -14,6 +14,7 @@ namespace Packagist\WebBundle\Controller;
 
 use Doctrine\DBAL\ConnectionException;
 use Packagist\WebBundle\Entity\Package;
+use Packagist\WebBundle\Entity\Version;
 use Packagist\WebBundle\Entity\PackageRepository;
 use Packagist\WebBundle\Entity\VersionRepository;
 use Pagerfanta\Adapter\FixedAdapter;
@@ -39,7 +40,7 @@ class ExploreController extends Controller
         /** @var PackageRepository $pkgRepo */
         $pkgRepo = $this->getDoctrine()->getRepository(Package::class);
         /** @var VersionRepository $verRepo */
-        $verRepo = $this->get('packagist.version_repository');
+        $verRepo = $this->getDoctrine()->getRepository(Version::class);
         $newSubmitted = $pkgRepo->getQueryBuilderForNewestPackages()->setMaxResults(10)
             ->getQuery()->useResultCache(true, 60)->getResult();
         $newReleases = $verRepo->getLatestReleases(10);

+ 8 - 2
src/Packagist/WebBundle/Entity/AuthorRepository.php

@@ -12,13 +12,19 @@
 
 namespace Packagist\WebBundle\Entity;
 
-use Doctrine\ORM\EntityRepository;
+use Doctrine\Bundle\DoctrineBundle\Repository\ServiceEntityRepository;
+use Symfony\Bridge\Doctrine\RegistryInterface;
 
 /**
  * @author Jordi Boggiano <j.boggiano@seld.be>
  */
-class AuthorRepository extends EntityRepository
+class AuthorRepository extends ServiceEntityRepository
 {
+    public function __construct(RegistryInterface $registry)
+    {
+        parent::__construct($registry, Author::class);
+    }
+
     public function findOneByNameAndPackage($author, Package $package)
     {
         $qb = $this->createQueryBuilder('a');

+ 8 - 2
src/Packagist/WebBundle/Entity/DownloadRepository.php

@@ -2,10 +2,16 @@
 
 namespace Packagist\WebBundle\Entity;
 
-use Doctrine\ORM\EntityRepository;
+use Doctrine\Bundle\DoctrineBundle\Repository\ServiceEntityRepository;
+use Symfony\Bridge\Doctrine\RegistryInterface;
 
-class DownloadRepository extends EntityRepository
+class DownloadRepository extends ServiceEntityRepository
 {
+    public function __construct(RegistryInterface $registry)
+    {
+        parent::__construct($registry, Download::class);
+    }
+
     public function deletePackageDownloads(Package $package)
     {
         $conn = $this->getEntityManager()->getConnection();

+ 8 - 2
src/Packagist/WebBundle/Entity/JobRepository.php

@@ -2,10 +2,16 @@
 
 namespace Packagist\WebBundle\Entity;
 
-use Doctrine\ORM\EntityRepository;
+use Doctrine\Bundle\DoctrineBundle\Repository\ServiceEntityRepository;
+use Symfony\Bridge\Doctrine\RegistryInterface;
 
-class JobRepository extends EntityRepository
+class JobRepository extends ServiceEntityRepository
 {
+    public function __construct(RegistryInterface $registry)
+    {
+        parent::__construct($registry, Job::class);
+    }
+
     public function start(string $jobId): bool
     {
         $conn = $this->getEntityManager()->getConnection();

+ 8 - 2
src/Packagist/WebBundle/Entity/PackageRepository.php

@@ -12,15 +12,21 @@
 
 namespace Packagist\WebBundle\Entity;
 
-use Doctrine\ORM\EntityRepository;
 use Doctrine\ORM\QueryBuilder;
 use Doctrine\DBAL\Cache\QueryCacheProfile;
+use Doctrine\Bundle\DoctrineBundle\Repository\ServiceEntityRepository;
+use Symfony\Bridge\Doctrine\RegistryInterface;
 
 /**
  * @author Jordi Boggiano <j.boggiano@seld.be>
  */
-class PackageRepository extends EntityRepository
+class PackageRepository extends ServiceEntityRepository
 {
+    public function __construct(RegistryInterface $registry)
+    {
+        parent::__construct($registry, Package::class);
+    }
+
     public function findProviders($name)
     {
         $query = $this->createQueryBuilder('p')

+ 8 - 2
src/Packagist/WebBundle/Entity/UserRepository.php

@@ -12,13 +12,19 @@
 
 namespace Packagist\WebBundle\Entity;
 
-use Doctrine\ORM\EntityRepository;
+use Doctrine\Bundle\DoctrineBundle\Repository\ServiceEntityRepository;
+use Symfony\Bridge\Doctrine\RegistryInterface;
 
 /**
  * @author Jordi Boggiano <j.boggiano@seld.be>
  */
-class UserRepository extends EntityRepository
+class UserRepository extends ServiceEntityRepository
 {
+    public function __construct(RegistryInterface $registry)
+    {
+        parent::__construct($registry, User::class);
+    }
+
     public function findUsersMissingApiToken()
     {
         $qb = $this->createQueryBuilder('u')

+ 8 - 2
src/Packagist/WebBundle/Entity/VendorRepository.php

@@ -12,13 +12,19 @@
 
 namespace Packagist\WebBundle\Entity;
 
-use Doctrine\ORM\EntityRepository;
+use Doctrine\Bundle\DoctrineBundle\Repository\ServiceEntityRepository;
+use Symfony\Bridge\Doctrine\RegistryInterface;
 
 /**
  * @author Jordi Boggiano <j.boggiano@seld.be>
  */
-class VendorRepository extends EntityRepository
+class VendorRepository extends ServiceEntityRepository
 {
+    public function __construct(RegistryInterface $registry)
+    {
+        parent::__construct($registry, Vendor::class);
+    }
+
     public function isVerified(string $vendor): bool
     {
         $result = $this->getEntityManager()->getConnection()->fetchColumn('SELECT verified FROM vendor WHERE name = :vendor', ['vendor' => $vendor]);

+ 7 - 4
src/Packagist/WebBundle/Entity/VersionRepository.php

@@ -12,14 +12,15 @@
 
 namespace Packagist\WebBundle\Entity;
 
-use Doctrine\ORM\EntityRepository;
 use Doctrine\DBAL\Connection;
 use Predis\Client;
+use Doctrine\Bundle\DoctrineBundle\Repository\ServiceEntityRepository;
+use Symfony\Bridge\Doctrine\RegistryInterface;
 
 /**
  * @author Jordi Boggiano <j.boggiano@seld.be>
  */
-class VersionRepository extends EntityRepository
+class VersionRepository extends ServiceEntityRepository
 {
     private $redis;
 
@@ -32,9 +33,11 @@ class VersionRepository extends EntityRepository
         'suggest',
     );
 
-    public function setRedis(Client $client)
+    public function __construct(RegistryInterface $registry, Client $redisCache)
     {
-        $this->redis = $client;
+        parent::__construct($registry, Version::class);
+
+        $this->redis = $redisCache;
     }
 
     public function remove(Version $version)

+ 4 - 27
src/Packagist/WebBundle/Resources/config/services.yml

@@ -6,6 +6,7 @@ services:
         bind:
             # services
             $redis: '@snc_redis.default_client'
+            $redisCache: '@snc_redis.cache_client'
             #$instantMailer: '@swiftmailer.mailer.instant'
 
             # params
@@ -25,6 +26,9 @@ services:
         resource: '../../Controller/*'
         tags: ['controller.service_arguments']
 
+    Packagist\WebBundle\Entity\:
+        resource: '../../Entity/*Repository.php'
+
     packagist.twig.extension:
         public: true
         class: Packagist\WebBundle\Twig\PackagistExtension
@@ -77,26 +81,6 @@ services:
         class: Packagist\WebBundle\Security\Provider\UserProvider
         arguments: ['@fos_user.user_manager', '@fos_user.user_provider.username_email', '@scheduler']
 
-    packagist.user_repository:
-        public: true
-        class: Packagist\WebBundle\Entity\UserRepository
-        factory: ['@doctrine', getRepository]
-        arguments: ['Packagist\WebBundle\Entity\User']
-
-    packagist.package_repository:
-        public: true
-        class: Packagist\WebBundle\Entity\PackageRepository
-        factory: ['@doctrine', getRepository]
-        arguments: ['Packagist\WebBundle\Entity\Package']
-
-    packagist.version_repository:
-        public: true
-        class: Packagist\WebBundle\Entity\VersionRepository
-        factory: ['@doctrine', getRepository]
-        arguments: ['Packagist\WebBundle\Entity\Version']
-        calls:
-            - [ setRedis, [ '@snc_redis.cache_client' ]]
-
     packagist.package_updater:
         public: true
         class: Packagist\WebBundle\Package\Updater
@@ -137,17 +121,10 @@ services:
     packagist.provider_manager:
         public: true
         class: Packagist\WebBundle\Model\ProviderManager
-        arguments:
-            - '@snc_redis.default_client'
-            - '@packagist.package_repository'
 
     packagist.favorite_manager:
         public: true
         class: Packagist\WebBundle\Model\FavoriteManager
-        arguments:
-            - '@snc_redis.default_client'
-            - '@packagist.package_repository'
-            - '@packagist.user_repository'
 
     packagist.package_manager:
         public: true

+ 1 - 1
src/Packagist/WebBundle/Tests/Controller/ApiControllerTest.php

@@ -47,7 +47,7 @@ class ApiControllerTest extends WebTestCase
             ->with($this->equalTo(array('username' => 'test', 'apiToken' => 'token')))
             ->will($this->returnValue($user));
 
-        static::$kernel->getContainer()->set('packagist.user_repository', $repo);
+        static::$kernel->getContainer()->set('test.user_repo', $repo);
         static::$kernel->getContainer()->set('doctrine.orm.entity_manager', $em);
         static::$kernel->getContainer()->set('packagist.package_updater', $updater);
 

+ 1 - 1
src/Packagist/WebBundle/Tests/Model/PackageManagerTest.php

@@ -29,7 +29,7 @@ class PackageManagerTest extends TestCase
             ->with($this->equalTo(array('username' => 'test', 'apiToken' => 'token')))
             ->will($this->returnValue($user));
 
-        static::$kernel->getContainer()->set('packagist.user_repository', $repo);
+        static::$kernel->getContainer()->set('test.user_repo', $repo);
         static::$kernel->getContainer()->set('doctrine.orm.entity_manager', $em);
         static::$kernel->getContainer()->set('packagist.package_updater', $updater);