<?php

declare(strict_types=1);

namespace Xentral\Components\SchemaCreator\Index;

use Xentral\Components\SchemaCreator\Interfaces\IndexInterface;

final class Index implements IndexInterface
{
    /** @var string $type */
    private $type = 'INDEX';

    /** @var string|null $name */
    private $name;

    /** @var array $references */
    private $references;

    /**
     * @param array       $references
     * @param string|null $name
     */
    public function __construct(array $references, ?string $name = null)
    {
        $this->name = $name;
        $this->references = $references;
    }

    /**
     * @inheritDoc
     */
    public function getType(): string
    {
        return $this->type;
    }

    /**
     * @inheritDoc
     */
    public function getName(): string
    {
        if (empty($this->name)) {
            return 'index_'.implode('_', array_map('strtolower', $this->references));
        }

        return $this->name;
    }

    /**
     * @inheritDoc
     */
    public function getReferences(): array
    {
        return $this->references;
    }

    /**
     * @inheritDoc
     */
    public function isUnique(): bool
    {
        return false;
    }
}