public function build(array $parsed) { $sql = ""; if (array_key_exists("UNION ALL", $parsed) || array_key_exists("UNION", $parsed)) { foreach ($parsed as $union_type => $outer_v) { $first = true; foreach ($outer_v as $item) { if (!$first) { $sql .= " {$union_type} "; } else { $first = false; } $select_builder = new SelectStatementBuilder(); $len = strlen($sql); $sql .= $select_builder->build($item); if ($len === strlen($sql)) { throw new UnableToCreateSQLException('FROM', $union_type, $outer_v, 'expr_type'); } } } } else { foreach ($parsed as $k => $v) { $len = strlen($sql); $sql .= $this->buildTable($v, $k); $sql .= $this->buildTableExpression($v, $k); $sql .= $this->buildSubquery($v, $k); if ($len == strlen($sql)) { throw new UnableToCreateSQLException('FROM', $k, $v, 'expr_type'); } } } return "FROM " . $sql; }
public function create($parsed) { $k = key($parsed); switch ($k) { case 'UNION': case 'UNION ALL': throw new UnsupportedFeatureException($k); break; case 'SELECT': $builder = new SelectStatementBuilder(); $this->created = $builder->build($parsed); break; case 'INSERT': $builder = new InsertStatementBuilder(); $this->created = $builder->build($parsed); break; case 'REPLACE': $builder = new ReplaceStatementBuilder(); $this->created = $builder->build($parsed); break; case 'DELETE': $builder = new DeleteStatementBuilder(); $this->created = $builder->build($parsed); break; case 'UPDATE': $builder = new UpdateStatementBuilder(); $this->created = $builder->build($parsed); break; case 'RENAME': $builder = new RenameStatementBuilder(); $this->created = $builder->build($parsed); break; case 'SHOW': $builder = new ShowStatementBuilder(); $this->created = $builder->build($parsed); break; case 'CREATE': $builder = new CreateStatementBuilder(); $this->created = $builder->build($parsed); break; case 'BRACKET': $builder = new BracketStatementBuilder(); $this->created = $builder->build($parsed); break; case 'DROP': $builder = new DropStatementBuilder(); $this->created = $builder->build($parsed); break; default: throw new UnsupportedFeatureException($k); break; } return $this->created; }
protected function buildSelectStatement($parsed) { $builder = new SelectStatementBuilder(); return $builder->build($parsed); }