. * * 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 Espo\ORM\Defs\Params\AttributeParam; /** * Attribute definitions. */ class AttributeDefs { /** @var array */ private array $data; private string $name; private function __construct() {} /** * @param array $raw */ public static function fromRaw(array $raw, string $name): self { $obj = new self(); $obj->data = $raw; $obj->name = $name; return $obj; } /** * Get a name. */ public function getName(): string { return $this->name; } /** * Get a type. */ public function getType(): string { return $this->data[AttributeParam::TYPE]; } /** * Get a length. */ public function getLength(): ?int { return $this->data[AttributeParam::LEN] ?? null; } /** * Whether is not-storable. Not-storable attributes are not stored in DB. */ public function isNotStorable(): bool { return $this->data[AttributeParam::NOT_STORABLE] ?? false; } /** * Whether is auto-increment. */ public function isAutoincrement(): bool { return $this->data[AttributeParam::AUTOINCREMENT] ?? false; } /** * Whether a parameter is set. */ public function hasParam(string $name): bool { return array_key_exists($name, $this->data); } /** * Get a parameter value by a name. * * @return mixed */ public function getParam(string $name) { return $this->data[$name] ?? null; } }