. * * The interactive user interfaces in modified source and object code versions * of this program must display Appropriate Legal Notices, as required under * Section 5 of the GNU Affero General Public License version 3. * * In accordance with Section 7(b) of the GNU Affero General Public License version 3, * these Appropriate Legal Notices must retain the display of the "EspoCRM" word. ************************************************************************/ namespace Espo\ORM\Defs; use RuntimeException; /** * Definitions. */ class Defs { public function __construct(private DefsData $data) {} /** * Get an entity type list. * * @return string[] */ public function getEntityTypeList(): array { return $this->data->getEntityTypeList(); } /** * Get an entity definitions list. * * @return EntityDefs[] */ public function getEntityList(): array { $list = []; foreach ($this->getEntityTypeList() as $name) { $list[] = $this->getEntity($name); } return $list; } /** * Has an entity type. */ public function hasEntity(string $entityType): bool { return $this->data->hasEntity($entityType); } /** * Get entity definitions. */ public function getEntity(string $entityType): EntityDefs { if (!$this->hasEntity($entityType)) { throw new RuntimeException("Entity type '{$entityType}' does not exist."); } return $this->data->getEntity($entityType); } /** * Try to get entity definitions, if an entity type does not exist, then return null. */ public function tryGetEntity(string $entityType): ?EntityDefs { if (!$this->hasEntity($entityType)) { return null; } return $this->getEntity($entityType); } }