KumbiaPHP/ActiveRecord

View on GitHub
Metadata/SqliteMetadata.php

Summary

Maintainability
A
0 mins
Test Coverage
<?php

/**
 * KumbiaPHP web & app Framework.
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://wiki.kumbiaphp.com/Licencia
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@kumbiaphp.com so we can send you a copy immediately.
 *
 * @category   Kumbia
 *
 * @copyright  2005 - 2020  Kumbia Team (http://www.kumbiaphp.com)
 * @license    http://wiki.kumbiaphp.com/Licencia     New BSD License
 */
namespace Kumbia\ActiveRecord\Metadata;

use \PDO;

/**
 * Adaptador de Metadata para SQLite.
 */
class SqliteMetadata extends Metadata
{
    /**
     * Consultar los campos de la tabla en la base de datos.
     *
     * @param  \PDO    $pdo      base de datos
     * @param  string  $table    tabla
     * @param  string  $schema   squema
     * 
     * @return array
     */
    protected function queryFields(\PDO $pdo, string $table, string $schema = ''): array
    {
        $describe = $pdo->query("PRAGMA table_info($table)", \PDO::FETCH_OBJ);
        //var_dump($results); die();
        $fields = [];
        foreach ($describe as $value) {
            $fields[$value->name] = [
                'Type' => \strtolower(\str_replace(' ', '', $value->type)),
                'Null' => $value->notnull == 0,
                'Default' => (bool) $value->dflt_value,
                'Key' => $value->pk == 1 ? 'PRI' : '',
                'Auto' => (\strtolower($value->type) == 'int' && $value->pk == 1) // using rowid
            ];
            $this->filterColumn($fields[$value->name], $value->name);
        }

        return $fields;
    }
}