. * * 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\IndexParam; /** * Index definitions. */ class IndexDefs { /** @var array */ private $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 key. */ public function getKey(): string { return $this->data[IndexParam::KEY] ?? ''; } /** * Whether is unique. */ public function isUnique(): bool { // For bc. if (($this->data['unique'] ?? false)) { return true; } $type = $this->data[IndexParam::TYPE] ?? null; return $type === 'unique'; } /** * Get a column list. * * @return string[] */ public function getColumnList(): array { return $this->data[IndexParam::COLUMNS] ?? []; } /** * Get a flag list. * * @return string[] */ public function getFlagList(): array { return $this->data[IndexParam::FLAGS] ?? []; } }