/** * Adds externalSystemId column to specific table if it does not exist * @param $tableName * @param $maxLength * @param $columnName */ public static function addExternalIdColumnIfMissing($tableName, $maxLength = 255, $columnName = null) { if (!isset($columnName)) { $columnName = static::EXTERNAL_SYSTEM_ID_COLUMN_NAME; } // check if external_system_id exists in fields $columnExists = ZurmoRedBean::$writer->doesColumnExist($tableName, $columnName); if (!$columnExists) { // if not, update model and add an external_system_id field $type = 'string'; $length = null; RedBeanModelMemberRulesToColumnAdapter::resolveStringTypeAndLengthByMaxLength($type, $length, $maxLength); $columns = array(); $columns[] = RedBeanModelMemberToColumnUtil::resolveColumnMetadataByHintType($columnName, $type, $length); $schema = CreateOrUpdateExistingTableFromSchemaDefinitionArrayUtil::getTableSchema($tableName, $columns); CreateOrUpdateExistingTableFromSchemaDefinitionArrayUtil::generateOrUpdateTableBySchemaDefinition($schema, new MessageLogger()); } }
/** * Returns table schema definition for temporary import table provided name and columns, implicitly * adds reserved columns too * @param $tableName * @param $columns * @apram $withReservedColumns * @return array */ protected static function getTableSchemaByNameAndImportColumns($tableName, array $columns, $withReservedColumns = true) { if ($withReservedColumns) { $columns = CMap::mergeArray($columns, static::getReservedColumnMetadata()); } return CreateOrUpdateExistingTableFromSchemaDefinitionArrayUtil::getTableSchema($tableName, $columns); }