CI_DB_postgre_forge Class Reference

Inheritance diagram for CI_DB_postgre_forge:
Collaboration diagram for CI_DB_postgre_forge:

List of all members.


Public Member Functions

 _create_database ($name)
 Create database.
 _drop_database ($name)
 Drop database.
 _create_table ($table, $fields, $primary_keys, $keys, $if_not_exists)
 Create Table.
 _drop_table ($table)
 Drop Table.
 _alter_table ($alter_type, $table, $column_name, $column_definition= '', $default_value= '', $null= '', $after_field= '')
 Alter table query.
 _rename_table ($table_name, $new_table_name)
 Rename a table.

Detailed Description

Definition at line 25 of file postgre_forge.php.


Member Function Documentation

CI_DB_postgre_forge::_alter_table ( alter_type,
table,
column_name,
column_definition = '',
default_value = '',
null = '',
after_field = '' 
)

Alter table query.

Generates a platform-specific query so that a table can be altered Called by add_column(), drop_column(), and column_alter(),

private

Parameters:
string the ALTER type (ADD, DROP, CHANGE)
string the column name
string the table name
string the column definition
string the default value
boolean should 'NOT NULL' be added
string the field after which we should add the new field
Returns:
object

Definition at line 191 of file postgre_forge.php.

00192         {
00193                 $sql = 'ALTER TABLE '.$this->db->_protect_identifiers($table)." $alter_type ".$this->db->_protect_identifiers($column_name);
00194 
00195                 // DROP has everything it needs now.
00196                 if ($alter_type == 'DROP')
00197                 {
00198                         return $sql;
00199                 }
00200 
00201                 $sql .= " $column_definition";
00202 
00203                 if ($default_value != '')
00204                 {
00205                         $sql .= " DEFAULT \"$default_value\"";
00206                 }
00207 
00208                 if ($null === NULL)
00209                 {
00210                         $sql .= ' NULL';
00211                 }
00212                 else
00213                 {
00214                         $sql .= ' NOT NULL';
00215                 }
00216 
00217                 if ($after_field != '')
00218                 {
00219                         $sql .= ' AFTER ' . $this->db->_protect_identifiers($after_field);
00220                 }
00221                 
00222                 return $sql;
00223                 
00224         }

CI_DB_postgre_forge::_create_database ( name  ) 

Create database.

private

Parameters:
string the database name
Returns:
bool

Definition at line 34 of file postgre_forge.php.

00035         {
00036                 return "CREATE DATABASE ".$name;
00037         }

CI_DB_postgre_forge::_create_table ( table,
fields,
primary_keys,
keys,
if_not_exists 
)

Create Table.

private

Parameters:
string the table name
array the fields
mixed primary key(s)
mixed key(s)
boolean should 'IF NOT EXISTS' be added to the SQL
Returns:
bool

Definition at line 66 of file postgre_forge.php.

References CI_DB_forge::$fields, CI_DB_forge::$keys, and CI_DB_forge::$primary_keys.

00067         {
00068                 $sql = 'CREATE TABLE ';
00069                 
00070                 if ($if_not_exists === TRUE)
00071                 {
00072                         $sql .= 'IF NOT EXISTS ';
00073                 }
00074                 
00075                 $sql .= $this->db->_escape_table($table)." (";
00076                 $current_field_count = 0;
00077 
00078                 foreach ($fields as $field=>$attributes)
00079                 {
00080                         // Numeric field names aren't allowed in databases, so if the key is
00081                         // numeric, we know it was assigned by PHP and the developer manually
00082                         // entered the field information, so we'll simply add it to the list
00083                         if (is_numeric($field))
00084                         {
00085                                 $sql .= "\n\t$attributes";
00086                         }
00087                         else
00088                         {
00089                                 $attributes = array_change_key_case($attributes, CASE_UPPER);
00090                                 
00091                                 $sql .= "\n\t".$this->db->_protect_identifiers($field);
00092                                 
00093                                 $sql .=  ' '.$attributes['TYPE'];
00094         
00095                                 if (array_key_exists('CONSTRAINT', $attributes))
00096                                 {
00097                                         $sql .= '('.$attributes['CONSTRAINT'].')';
00098                                 }
00099         
00100                                 if (array_key_exists('UNSIGNED', $attributes) && $attributes['UNSIGNED'] === TRUE)
00101                                 {
00102                                         $sql .= ' UNSIGNED';
00103                                 }
00104         
00105                                 if (array_key_exists('DEFAULT', $attributes))
00106                                 {
00107                                         $sql .= ' DEFAULT \''.$attributes['DEFAULT'].'\'';
00108                                 }
00109         
00110                                 if (array_key_exists('NULL', $attributes) && $attributes['NULL'] === TRUE)
00111                                 {
00112                                         $sql .= ' NULL';
00113                                 }
00114                                 else
00115                                 {
00116                                         $sql .= ' NOT NULL';                    
00117                                 }
00118         
00119                                 if (array_key_exists('AUTO_INCREMENT', $attributes) && $attributes['AUTO_INCREMENT'] === TRUE)
00120                                 {
00121                                         $sql .= ' AUTO_INCREMENT';
00122                                 }
00123                         }
00124                         
00125                         // don't add a comma on the end of the last field
00126                         if (++$current_field_count < count($fields))
00127                         {
00128                                 $sql .= ',';
00129                         }
00130                 }
00131 
00132                 if (count($primary_keys) > 0)
00133                 {
00134                         $primary_keys = $this->db->_protect_identifiers($primary_keys);
00135                         $sql .= ",\n\tPRIMARY KEY (" . implode(', ', $primary_keys) . ")";
00136                 }
00137                 
00138                 if (is_array($keys) && count($keys) > 0)
00139                 {
00140                         foreach ($keys as $key)
00141                         {
00142                                 if (is_array($key))
00143                                 {
00144                                         $key = $this->db->_protect_identifiers($key);   
00145                                 }
00146                                 else
00147                                 {
00148                                         $key = array($this->db->_protect_identifiers($key));
00149                                 }
00150                                 
00151                                 $sql .= ",\n\tFOREIGN KEY (" . implode(', ', $key) . ")";
00152                         }
00153                 }
00154 
00155                 $sql .= "\n);";
00156 
00157                 return $sql;
00158         }

CI_DB_postgre_forge::_drop_database ( name  ) 

Drop database.

private

Parameters:
string the database name
Returns:
bool

Definition at line 48 of file postgre_forge.php.

00049         {
00050                 return "DROP DATABASE ".$name;
00051         }

CI_DB_postgre_forge::_drop_table ( table  ) 

Drop Table.

private

Returns:
bool

Definition at line 168 of file postgre_forge.php.

00169         {
00170                 return "DROP TABLE ".$this->db->_escape_table($table)." CASCADE";
00171         }

CI_DB_postgre_forge::_rename_table ( table_name,
new_table_name 
)

Rename a table.

Generates a platform-specific query so that a table can be renamed

private

Parameters:
string the old table name
string the new table name
Returns:
string

Definition at line 238 of file postgre_forge.php.

00239         {
00240                 $sql = 'ALTER TABLE '.$this->db->_protect_identifiers($table_name)." RENAME TO ".$this->db->_protect_identifiers($new_table_name);
00241                 return $sql;
00242         }


The documentation for this class was generated from the following file: