foreach ($db->query('SHOW TABLES')->fetchAll(PDO::FETCH_COLUMN) as $table) {
    $name = implode('', array_map(function ($word) {
        return ucfirst($word);
    }, explode('_', $table)));
    $cols = array();
    foreach ($db->query("DESCRIBE `{$table}`") as $col) {
        $cols[$col['Field']] = '@property' . (strtolower($col['Extra']) == 'auto_increment' ? '-read' : NULL) . ' ' . getColType(strtolower($col['Type'])) . (strtolower($col['Null']) == 'yes' ? '|NULL' : NULL) . ' $' . $col['Field'] . "\n";
    }
    $tables[$name] = array($table => $cols);
}
// Generování tříd,
foreach ($tables as $className => $table) {
    foreach ($table as $name => $cols) {
        if (!file_exists(REPOSITORY_PATH . $className . '.php')) {
            //$entity_name = readline($className . ": ");
            $entity_name = readline_predefined($className . ": ", Inflector::singularize($className));
            newEntity($cols, $entity_name);
        } else {
            $repository = file_get_contents(REPOSITORY_PATH . $className . '.php');
            preg_match('/(?<=@entity \\\\).*/', $repository, $matches);
            if (!$matches) {
                continue;
            }
            $matches = explode("\\", $matches[0]);
            $entity_name = end($matches);
            if (file_exists(ENTITY_PATH . $entity_name . '.php')) {
                editEntity($cols, $entity_name);
            } else {
                newEntity($cols, $entity_name);
            }
        }
function generateEntity($className, $cols)
{
    if (!file_exists(REPOSITORY_PATH . $className . '.php')) {
        $entity_name = readline_predefined("  Entity name for repo '" . $className . "': ", Inflector::singularize($className));
        newEntity($cols, $entity_name);
        drawRow("Entity '{$entity_name}' generated");
    } else {
        $repository = file_get_contents(REPOSITORY_PATH . $className . '.php');
        preg_match('/(?<=@entity \\\\).*/', $repository, $matches);
        if (!$matches) {
            return null;
        }
        $matches = explode("\\", $matches[0]);
        $entity_name = end($matches);
        if (file_exists(ENTITY_PATH . $entity_name . '.php')) {
            editEntity($cols, $entity_name);
            drawRow("Entity '{$entity_name}' updated");
        } else {
            newEntity($cols, $entity_name);
            drawRow("Entity '{$entity_name}' generated");
        }
    }
    return $entity_name;
}