diff --git a/src/databases/firebird_manip.php b/src/databases/firebird_manip.php index cd62546..a931004 100644 --- a/src/databases/firebird_manip.php +++ b/src/databases/firebird_manip.php @@ -19,9 +19,62 @@ */ class firebird_manip extends db_manip{ + /** + * Convienience function to generate sql for creating a db table + * + * @param string $name + * @param array $fields + * @param array $constraints=array() + * @param array $indexes=array() + * + * @return string + */ function create_table($name, $fields, $constraints=array(), $indexes=array()) { - $sql = "CREATE TABLE {$name}"; + $column_array = array(); + + // Reorganize into an array indexed with column information + // Eg $column_array[$colname] = array( + // 'type' => ..., + // 'constraint' => ..., + // 'index' => ..., + // ) + foreach($columns as $colname => $type) + { + if(is_numeric($colname)) + { + $colname = $type; + } + + $column_array[$colname] = array(); + $column_array[$colname]['type'] = ($type !== $colname) ? $type : ''; + } + + if( ! empty($constraints)) + { + foreach($constraints as $col => $const) + { + $column_array[$col]['constraint'] = $const; + } + } + + // Join column definitons together + $columns = array(); + foreach($column_array as $n => $props) + { + $str = "{$n} "; + $str .= (isset($props['type'])) ? "{$props['type']}" : ""; + $str .= (isset($props['constraint'])) ? "{$props['constraint']} " : ""; + + $columns[] = $str; + } + + // Generate the sql for the creation of the table + $sql = "CREATE TABLE \"{$name}\" ("; + $sql .= implode(",", $columns); + $sql .= ")"; + + return $sql; } /** diff --git a/tests/databases/firebird.php b/tests/databases/firebird.php index fecd5f5..723fd44 100644 --- a/tests/databases/firebird.php +++ b/tests/databases/firebird.php @@ -36,4 +36,14 @@ class FirebirdTest extends UnitTestCase { { $this->assertIsA($this->db, 'Firebird'); } + + function TestCreateDatabase() + { + + } + + function TestDeleteDatabase() + { + + } } \ No newline at end of file