public function Create() { $sql = 'CREATE TABLE ' . pdoMap_Database_Request_Adapters_MySQL_Builder::escapeTable($this->name, $this->database) . ' (' . "\n"; $opt = ''; foreach ($this->fields as $field) { $sql .= pdoMap_Database_Request_Adapters_MySQL_Builder::escapeEntity($field->name) . ' '; switch ($field->type) { case pdoMap_Mapping_Metadata_Field::FIELD_TYPE_PK: $sql .= 'INT(10) UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY '; break; case pdoMap_Mapping_Metadata_Field::FIELD_TYPE_FK: $sql .= 'INT(10) UNSIGNED NOT NULL'; $opt .= 'INDEX(' . pdoMap_Database_Request_Adapters_MySQL_Builder::escapeEntity($field->name) . '), ' . "\n"; break; case pdoMap_Mapping_Metadata_Field::FIELD_TYPE_TEXT: if (isset($field->size)) { $sql .= 'VARCHAR(' . $field->size . ')'; } else { $sql .= 'TEXT'; } break; case pdoMap_Mapping_Metadata_Field::FIELD_TYPE_INT: switch ($field->size) { case 'tiny': $sql .= 'TINYINT'; break; case 'small': $sql .= 'SMALLINT'; break; case 'medium': $sql .= 'MEDIUMINT'; break; case 'big': $sql .= 'BIGINT'; break; default: $sql .= 'INT(10)'; } break; case pdoMap_Mapping_Metadata_Field::FIELD_TYPE_FLOAT: $sql .= 'FLOAT'; break; case pdoMap_Mapping_Metadata_Field::FIELD_TYPE_ENUM: $sql .= 'ENUM('; foreach ($field->values as $val) { $sql .= pdoMap_Database_Request_Adapters_MySQL_Builder::escapeValue($val) . ', '; } $sql = substr($sql, 0, strlen($sql) - 2) . ')'; break; case pdoMap_Mapping_Metadata_Field::FIELD_TYPE_DATE: $sql .= 'TIMESTAMP'; break; default: throw new Exception('Unknown field type ' . $field->type . ' for ' . $field->name . ' on table ' . $this->name); break; } if ($field->isIndex) { $opt .= 'INDEX(' . pdoMap_Database_Request_Adapters_MySQL_Builder::escapeEntity($field->name) . '), ' . "\n"; } if ($field->isNull) { $sql .= ' NULL '; } else { $sql .= ' NOT NULL '; } if ($field->default) { if (substr($field->default, 0, 1) == '*') { $sql .= ' DEFAULT ' . substr($field->default, 1); } else { $sql .= ' DEFAULT ' . pdoMap_Database_Request_Adapters_MySQL_Builder::escapeValue($field->default); } } $sql .= ' COMMENT \'*' . $field->bind . ':' . $field->comment . '\', ' . "\n"; } $sql .= $opt; $sql = substr($sql, 0, strlen($sql) - 3) . ') ENGINE = INNODB;'; return pdoMap::database()->Request($this->database, $sql); }
public function escapeValue($value) { return pdoMap_Database_Request_Adapters_MySQL_Builder::escapeValue($value); }