Ejemplo n.º 1
0
 /**
  * Parse and process the structure content.
  *
  * create => create the table.
  *
  * add    => add a new field.
  * update => make some changes into one field.
  * delete => delete a field.
  *
  * drop   => drop the table.
  *
  * @param array $array Array from the json data with the table data.
  *
  * @return void
  */
 private function _processStructure($array)
 {
     foreach ($array as $tableName => $content) {
         foreach ($content as $action => $fields) {
             switch ($action) {
                 case 'create':
                     if (!$this->_tableManager->tableExists($tableName)) {
                         $keys = $this->_getKeys($fields);
                         $fields = $this->_convertFieldsData($fields);
                         $this->_tableManager->createTable($tableName, $fields, $keys);
                     }
                     break;
                 case 'drop':
                     $this->_tableManager->dropTable($tableName);
                     break;
                 case 'add':
                     $fields = $this->_convertFieldsData($fields);
                     foreach ($fields as $key => $field) {
                         $this->_tableManager->addField($tableName, $field);
                     }
                     break;
                 case 'update':
                     $fields = $this->_convertFieldsData($fields);
                     foreach ($fields as $key => $field) {
                         if (!isset($field['newName'])) {
                             $this->_tableManager->modifyField($tableName, $field);
                         } else {
                             $this->_tableManager->changeField($tableName, $field);
                         }
                     }
                     break;
                 case 'delete':
                     $fields = $this->_convertFieldsData($fields);
                     foreach ($fields as $key => $field) {
                         $this->_tableManager->deleteField($tableName, $field);
                     }
                     break;
                 case 'createIndex':
                     if (!array_key_exists('columns', $fields)) {
                         throw new Exception('Mandatory entry "columns" not found.');
                     }
                     $options = array();
                     if (array_key_exists('name', $fields)) {
                         $options['name'] = $fields['name'];
                     }
                     if (array_key_exists('unique', $fields)) {
                         $options['unique'] = $fields['unique'];
                     }
                     $this->_tableManager->createIndex($tableName, $fields['columns'], $options);
                     break;
             }
         }
     }
 }
Ejemplo n.º 2
0
 /**
  * Parse and process the structure content.
  *
  * create => create the table.
  *
  * add    => add a new field.
  * update => make some changes into one field.
  * delete => delete a field.
  *
  * drop   => drop the table.
  *
  * @param array $array Array from the json data with the table data.
  *
  * @return void
  */
 private function _processStructure($array)
 {
     foreach ($array as $tableName => $content) {
         foreach ($content as $action => $fields) {
             switch ($action) {
                 case 'create':
                     if (!$this->_tableManager->tableExists($tableName)) {
                         $keys = $this->_getKeys($fields);
                         $fields = $this->_convertFieldsData($fields);
                         $this->_tableManager->createTable($tableName, $fields, $keys);
                     }
                     break;
                 case 'drop':
                     $this->_tableManager->dropTable($tableName);
                     break;
                 case 'add':
                     $fields = $this->_convertFieldsData($fields);
                     foreach ($fields as $key => $field) {
                         $this->_tableManager->addField($tableName, $field);
                     }
                     break;
                 case 'update':
                     $fields = $this->_convertFieldsData($fields);
                     foreach ($fields as $key => $field) {
                         if (!isset($field['newName'])) {
                             $this->_tableManager->modifyField($tableName, $field);
                         } else {
                             $this->_tableManager->changeField($tableName, $field);
                         }
                     }
                     break;
                 case 'delete':
                     $fields = $this->_convertFieldsData($fields);
                     foreach ($fields as $key => $field) {
                         $this->_tableManager->deleteField($tableName, $field);
                     }
                     break;
             }
         }
     }
 }