/**
  * Transform a model descriptor to a table descriptor.
  *
  * @param ModelDescriptor $descriptor
  * @return RecessTableDescriptor
  */
 function modelToTableDescriptor(ModelDescriptor $descriptor)
 {
     Library::import('recess.database.pdo.RecessTableDescriptor');
     Library::import('recess.database.pdo.RecessColumnDescriptor');
     $tableDescriptor = new RecessTableDescriptor();
     $tableDescriptor->name = $descriptor->getTable();
     foreach ($descriptor->properties as $property) {
         $tableDescriptor->addColumn($property->name, $property->type, true, $property->isPrimaryKey, array(), $property->isAutoIncrement ? array('autoincrement' => true) : array());
     }
     return $tableDescriptor;
 }
 /**
  * Retrieve the a table's RecessTableDescriptor.
  *
  * @param string $table Name of table.
  * @return RecessTableDescriptor
  */
 function getTableDescriptor($table)
 {
     $results = $this->pdo->query('PRAGMA table_info("' . $table . '");');
     $tableSql = $this->pdo->query('SELECT sql FROM sqlite_master WHERE type="table" AND name = "' . addslashes($table) . '"')->fetch();
     $tableSql = $tableSql['sql'];
     $columns = array();
     $tableDescriptor = new RecessTableDescriptor();
     foreach ($results as $result) {
         $tableDescriptor->addColumn($result['name'], SqliteDataSourceProvider::getRecessType($result['type']), $result['notnull'] == 0 ? true : false, $result['pk'] == 1 ? true : false, $result['dflt_value'] == null ? '' : $result['dflt_value'], strpos($tableSql, $result['name'] . ' INTEGER PRIMARY KEY AUTOINCREMENT') !== false ? array('autoincrement' => true) : array());
     }
     return $tableDescriptor;
 }
 /**
  * Retrieve the a table's RecessTableDescriptor.
  *
  * @param string $table Name of table.
  * @return RecessTableDescriptor
  */
 function getTableDescriptor($table)
 {
     Library::import('recess.database.pdo.RecessTableDescriptor');
     $tableDescriptor = new RecessTableDescriptor();
     $tableDescriptor->name = $table;
     try {
         $results = $this->pdo->query('SHOW COLUMNS FROM ' . $table . ';');
         $tableDescriptor->tableExists = true;
     } catch (PDOException $e) {
         $tableDescriptor->tableExists = false;
         return $tableDescriptor;
     }
     foreach ($results as $result) {
         $tableDescriptor->addColumn($result['Field'], $this->getRecessType($result['Type']), $result['Null'] == 'NO' ? false : true, $result['Key'] == 'PRI' ? true : false, $result['Default'] == null ? '' : $result['Default'], $result['Extra'] == 'auto_increment' ? array('autoincrement' => true) : array());
     }
     return $tableDescriptor;
 }
    /**
     * Retrieve the a table's RecessTableDescriptor.
     *
     * @param string $table Name of table.
     * @return RecessTableDescriptor
     */
    function getTableDescriptor($table)
    {
        Library::import('recess.database.pdo.RecessTableDescriptor');
        $tableDescriptor = new RecessTableDescriptor();
        $tableDescriptor->name = $table;
        try {
            $results = $this->pdo->query('SELECT keys.column_name as pri, cols.column_name as Field, 
						data_type as Type, column_default as default, is_nullable as null 
						FROM information_schema.columns cols
							LEFT JOIN information_schema.key_column_usage keys
							ON keys.table_name=cols.table_name
							AND keys.contraint_name = \'' . $table . '_pkey\' 
						WHERE cols.table_name = \'' . $table . '\'');
            $tableDescriptor->tableExists = true;
        } catch (PDOException $e) {
            $tableDescriptor->tableExists = false;
            return $tableDescriptor;
        }
        foreach ($results as $result) {
            $tableDescriptor->addColumn($result['field'], $this->getRecessType($result['type']), $result['null'] == 'NO' ? false : true, $result['pri'] == $result['field'] ? true : false, $result['default'] == null ? '' : $result['default'], substr($result['default'], 7) == "nextval" ? array('autoincrement' => true) : array());
        }
        return $tableDescriptor;
    }