| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283 |
- <?php
- /*
- * This file is part of Packagist.
- *
- * (c) Jordi Boggiano <j.boggiano@seld.be>
- * Nils Adermann <naderman@naderman.de>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
- namespace Packagist\WebBundle\Entity;
- use Doctrine\ORM\EntityRepository;
- /**
- * @author Jordi Boggiano <j.boggiano@seld.be>
- */
- class PackageRepository extends EntityRepository
- {
- public function getStalePackages()
- {
- $qb = $this->getEntityManager()->createQueryBuilder();
- $qb->select('p, v')
- ->from('Packagist\WebBundle\Entity\Package', 'p')
- ->leftJoin('p.versions', 'v')
- ->where('p.crawledAt IS NULL OR p.crawledAt < ?0')
- ->setParameters(array(new \DateTime('-1hour')));
- return $qb->getQuery()->getResult();
- }
- public function getStalePackagesForIndexing()
- {
- $qb = $this->getEntityManager()->createQueryBuilder();
- $qb->select('p, v, t')
- ->from('Packagist\WebBundle\Entity\Package', 'p')
- ->leftJoin('p.versions', 'v')
- ->leftJoin('v.tags', 't')
- ->where('p.indexedAt IS NULL OR p.indexedAt < p.crawledAt');
- return $qb->getQuery()->getResult();
- }
- public function findOneByName($name)
- {
- $qb = $this->getBaseQueryBuilder()
- ->where('p.name = ?0')
- ->setParameters(array($name));
- return $qb->getQuery()->getSingleResult();
- }
- public function findByTag($name)
- {
- return $this->getBaseQueryBuilder()
- // eliminate maintainers & tags from the select, because of the groupBy
- ->select('p, v')
- ->where('t.name = ?0')
- ->setParameters(array($name));
- }
- public function getQueryBuilderByMaintainer(User $user)
- {
- $qb = $this->getBaseQueryBuilder()
- // eliminate maintainers & tags from the select, because of the groupBy
- ->select('p, v')
- ->where('m.id = ?0')
- ->setParameters(array($user->getId()));
- return $qb;
- }
- public function getBaseQueryBuilder()
- {
- $qb = $this->getEntityManager()->createQueryBuilder();
- $qb->select('p, v, t, m')
- ->from('Packagist\WebBundle\Entity\Package', 'p')
- ->leftJoin('p.versions', 'v')
- ->leftJoin('p.maintainers', 'm')
- ->leftJoin('v.tags', 't')
- ->orderBy('v.development', 'DESC')
- ->addOrderBy('v.releasedAt', 'DESC');
- return $qb;
- }
- }
|