diff --git a/application/Espo/ORM/EntityManager.php b/application/Espo/ORM/EntityManager.php index 4a4a5ea12f..28e4e6f5fa 100644 --- a/application/Espo/ORM/EntityManager.php +++ b/application/Espo/ORM/EntityManager.php @@ -61,47 +61,43 @@ use stdClass; */ class EntityManager { - private $entityFactory; + private EntityFactory $entityFactory; - private $collectionFactory; + private CollectionFactory $collectionFactory; - private $repositoryFactory; + private RepositoryFactory $repositoryFactory; - /** @var EventDispatcher */ - protected $eventDispatcher; + protected EventDispatcher $eventDispatcher; - private $mapperFactory = null; + private ?MapperFactory $mapperFactory = null; - private $functionConverterFactory = null; + private ?FunctionConverterFactory $functionConverterFactory = null; - /** @var array */ - private $mappers = []; + private Metadata $metadata; - private $metadata; + private DatabaseParams $databaseParams; + + private QueryComposer $queryComposer; + + private QueryExecutor $queryExecutor; + + private QueryBuilder $queryBuilder; + + private SqlExecutor $sqlExecutor; + + private TransactionManager $transactionManager; + + private Locker $locker; + + private PDOProvider $pdoProvider; + + private const RDB_MAPPER_NAME = 'RDB'; /** @var array> */ private $repositoryHash = []; - /** @var DatabaseParams */ - private $databaseParams; - - /** @var QueryComposer */ - private $queryComposer; - - private $queryExecutor; - - private $queryBuilder; - - private $sqlExecutor; - - private $transactionManager; - - /** @var Locker */ - private $locker; - - private $pdoProvider; - - private const RDB_MAPPER_NAME = 'RDB'; + /** @var array */ + private $mappers = []; /** * @param AttributeExtractorFactory $attributeExtractorFactory @@ -401,9 +397,7 @@ class EntityManager $this->repositoryHash[$entityType] = $this->repositoryFactory->create($entityType); } - $repository = $this->repositoryHash[$entityType]; - - return $repository; + return $this->repositoryHash[$entityType]; } /** @@ -437,6 +431,21 @@ class EntityManager return $this->getRDBRepository($entityType); } + /** + * Get a repository by an entity class name. + * + * @template T of Entity + * @param class-string $className An entity class name. + * @return Repository + */ + public function getRepositoryByClass(string $className): Repository + { + $entityType = RepositoryUtil::getEntityTypeByClass($className); + + /** @var Repository */ + return $this->getRepository($entityType); + } + /** * Get metadata definitions. */ diff --git a/application/Espo/ORM/Repository/RDBRepository.php b/application/Espo/ORM/Repository/RDBRepository.php index 9900d026cb..16400b9798 100644 --- a/application/Espo/ORM/Repository/RDBRepository.php +++ b/application/Espo/ORM/Repository/RDBRepository.php @@ -127,6 +127,8 @@ class RDBRepository implements Repository * Get an entity. If ID is NULL, a new entity is returned. * * @return ?TEntity + * + * @deprecated Use `getById` and `getNew`. */ public function get(?string $id = null): ?Entity {