/** * 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; } } } }
/** * 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; } } } }