Nette\Database\Drivers\SqliteDriver::getIndexes PHP Method

getIndexes() public method

Returns metadata for all indexes in a table.
public getIndexes ( $table )
    public function getIndexes($table)
    {
        $indexes = [];
        foreach ($this->connection->query("PRAGMA index_list({$this->delimite($table)})") as $row) {
            $indexes[$row['name']]['name'] = $row['name'];
            $indexes[$row['name']]['unique'] = (bool) $row['unique'];
            $indexes[$row['name']]['primary'] = FALSE;
        }
        foreach ($indexes as $index => $values) {
            $res = $this->connection->query("PRAGMA index_info({$this->delimite($index)})");
            while ($row = $res->fetch(TRUE)) {
                $indexes[$index]['columns'][$row['seqno']] = $row['name'];
            }
        }
        $columns = $this->getColumns($table);
        foreach ($indexes as $index => $values) {
            $column = $indexes[$index]['columns'][0];
            foreach ($columns as $info) {
                if ($column == $info['name']) {
                    $indexes[$index]['primary'] = (bool) $info['primary'];
                    break;
                }
            }
        }
        if (!$indexes) {
            // @see http://www.sqlite.org/lang_createtable.html#rowid
            foreach ($columns as $column) {
                if ($column['vendor']['pk']) {
                    $indexes[] = ['name' => 'ROWID', 'unique' => TRUE, 'primary' => TRUE, 'columns' => [$column['name']]];
                    break;
                }
            }
        }
        return array_values($indexes);
    }