/** * @param GetSchema\Schema $schema * * @return Query\CreateExpression * @throws Exception */ private function getCreateQueryFromSchema(GetSchema\Schema $schema) { $definition = $schema->getTableDefinition($this->fromExpr); $defSchema = $definition->getSchema(); $parser = new PHPSQLParser(false, false, [Options::CONSISTENT_SUB_TREES => true]); $query = new CreateQuery(new Query($defSchema, $parser->parse($defSchema))); return $query->getObjectExpression(); }
/** * @param array $data * * @return mixed * @throws Exception * @SuppressWarnings(PHPMD.UnusedLocalVariable) */ protected function transform($data) { if (!$data instanceof GetSchema\Schema) { throw new Exception('Data is not a Schema.'); } $definition = $data->getTableDefinition($this->fromExpr); $defSchema = $definition->getSchema(); $parser = new PHPSQLParser(false, false, [Options::CONSISTENT_SUB_TREES => true]); $query = new CreateQuery(new Query($defSchema, $parser->parse($defSchema))); $createExpr = $query->getObjectExpression(); $indices = $createExpr->getIndices(); $returnData = []; /* @var $index Query\IndexExpression */ foreach ($indices as $index) { foreach ($index->getColumns() as $columnIndex => $column) { $row = self::$tplData; $row[self::KEY_TABLE] = $row[0] = $definition->getName(); $row[self::KEY_NON_UNIQUE] = $row[1] = $index->getNonUnique(); $row[self::KEY_NAME] = $row[2] = $index->getKeyName(); $row[self::KEY_SEQ_IN_INDEX] = $row[3] = $columnIndex + 1; $row[self::KEY_COLUMN_NAME] = $row[4] = $column->getColumnName(); $row[self::KEY_NULL] = $row[9] = $column->getColumnType()->isNullable() ? 'YES' : ''; $returnData[] = $row; } } return $returnData; }