public function getMetadata($source)
{
$escapedTable = $this->escapeIdentifier($source);
$columns = $this->fetchAll('DESCRIBE ' . $escapedTable, null, \PDO::FETCH_NUM);
$attributes = [];
$primaryKeys = [];
$nonPrimaryKeys = [];
$autoIncrementAttribute = null;
foreach ($columns as $column) {
$columnName = $column[0];
$attributes[] = $columnName;
if ($column[3] === 'PRI') {
$primaryKeys[] = $columnName;
} else {
$nonPrimaryKeys = $columnName;
}
if ($column[5] === 'auto_increment') {
$autoIncrementAttribute = $columnName;
}
}
$r = [Metadata::MODEL_ATTRIBUTES => $attributes, Metadata::MODEL_PRIMARY_KEY => $primaryKeys, Metadata::MODEL_NON_PRIMARY_KEY => $nonPrimaryKeys, Metadata::MODEL_IDENTITY_COLUMN => $autoIncrementAttribute];
return $r;
}