123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309 |
- <?php
- declare(strict_types=1);
- /**
- * SPDX-FileCopyrightText: 2024 Robin Appelman <robin@icewind.nl>
- * SPDX-License-Identifier: AGPL-3.0-or-later
- */
- namespace OC\DB\QueryBuilder;
- use OC\DB\Exceptions\DbalException;
- use OCP\DB\IResult;
- use OCP\DB\QueryBuilder\IQueryBuilder;
- use OCP\IDBConnection;
- /**
- * Base class for creating classes that extend the builtin query builder
- */
- abstract class ExtendedQueryBuilder implements IQueryBuilder {
- public function __construct(
- protected IQueryBuilder $builder,
- ) {
- }
- public function automaticTablePrefix($enabled) {
- $this->builder->automaticTablePrefix($enabled);
- return $this;
- }
- public function expr() {
- return $this->builder->expr();
- }
- public function func() {
- return $this->builder->func();
- }
- public function getType() {
- return $this->builder->getType();
- }
- public function getConnection() {
- return $this->builder->getConnection();
- }
- public function getState() {
- return $this->builder->getState();
- }
- public function execute(?IDBConnection $connection = null) {
- try {
- if ($this->getType() === \Doctrine\DBAL\Query\QueryBuilder::SELECT) {
- return $this->executeQuery($connection);
- } else {
- return $this->executeStatement($connection);
- }
- } catch (DBALException $e) {
- // `IQueryBuilder->execute` never wrapped the exception, but `executeQuery` and `executeStatement` do
- /** @var \Doctrine\DBAL\Exception $previous */
- $previous = $e->getPrevious();
- throw $previous;
- }
- }
- public function getSQL() {
- return $this->builder->getSQL();
- }
- public function setParameter($key, $value, $type = null) {
- $this->builder->setParameter($key, $value, $type);
- return $this;
- }
- public function setParameters(array $params, array $types = []) {
- $this->builder->setParameters($params, $types);
- return $this;
- }
- public function getParameters() {
- return $this->builder->getParameters();
- }
- public function getParameter($key) {
- return $this->builder->getParameter($key);
- }
- public function getParameterTypes() {
- return $this->builder->getParameterTypes();
- }
- public function getParameterType($key) {
- return $this->builder->getParameterType($key);
- }
- public function setFirstResult($firstResult) {
- $this->builder->setFirstResult($firstResult);
- return $this;
- }
- public function getFirstResult() {
- return $this->builder->getFirstResult();
- }
- public function setMaxResults($maxResults) {
- $this->builder->setMaxResults($maxResults);
- return $this;
- }
- public function getMaxResults() {
- return $this->builder->getMaxResults();
- }
- public function select(...$selects) {
- $this->builder->select(...$selects);
- return $this;
- }
- public function selectAlias($select, $alias) {
- $this->builder->selectAlias($select, $alias);
- return $this;
- }
- public function selectDistinct($select) {
- $this->builder->selectDistinct($select);
- return $this;
- }
- public function addSelect(...$select) {
- $this->builder->addSelect(...$select);
- return $this;
- }
- public function delete($delete = null, $alias = null) {
- $this->builder->delete($delete, $alias);
- return $this;
- }
- public function update($update = null, $alias = null) {
- $this->builder->update($update, $alias);
- return $this;
- }
- public function insert($insert = null) {
- $this->builder->insert($insert);
- return $this;
- }
- public function from($from, $alias = null) {
- $this->builder->from($from, $alias);
- return $this;
- }
- public function join($fromAlias, $join, $alias, $condition = null) {
- $this->builder->join($fromAlias, $join, $alias, $condition);
- return $this;
- }
- public function innerJoin($fromAlias, $join, $alias, $condition = null) {
- $this->builder->innerJoin($fromAlias, $join, $alias, $condition);
- return $this;
- }
- public function leftJoin($fromAlias, $join, $alias, $condition = null) {
- $this->builder->leftJoin($fromAlias, $join, $alias, $condition);
- return $this;
- }
- public function rightJoin($fromAlias, $join, $alias, $condition = null) {
- $this->builder->rightJoin($fromAlias, $join, $alias, $condition);
- return $this;
- }
- public function set($key, $value) {
- $this->builder->set($key, $value);
- return $this;
- }
- public function where(...$predicates) {
- $this->builder->where(...$predicates);
- return $this;
- }
- public function andWhere(...$where) {
- $this->builder->andWhere(...$where);
- return $this;
- }
- public function orWhere(...$where) {
- $this->builder->orWhere(...$where);
- return $this;
- }
- public function groupBy(...$groupBys) {
- $this->builder->groupBy(...$groupBys);
- return $this;
- }
- public function addGroupBy(...$groupBy) {
- $this->builder->addGroupBy(...$groupBy);
- return $this;
- }
- public function setValue($column, $value) {
- $this->builder->setValue($column, $value);
- return $this;
- }
- public function values(array $values) {
- $this->builder->values($values);
- return $this;
- }
- public function having(...$having) {
- $this->builder->having(...$having);
- return $this;
- }
- public function andHaving(...$having) {
- $this->builder->andHaving(...$having);
- return $this;
- }
- public function orHaving(...$having) {
- $this->builder->orHaving(...$having);
- return $this;
- }
- public function orderBy($sort, $order = null) {
- $this->builder->orderBy($sort, $order);
- return $this;
- }
- public function addOrderBy($sort, $order = null) {
- $this->builder->addOrderBy($sort, $order);
- return $this;
- }
- public function getQueryPart($queryPartName) {
- return $this->builder->getQueryPart($queryPartName);
- }
- public function getQueryParts() {
- return $this->builder->getQueryParts();
- }
- public function resetQueryParts($queryPartNames = null) {
- $this->builder->resetQueryParts($queryPartNames);
- return $this;
- }
- public function resetQueryPart($queryPartName) {
- $this->builder->resetQueryPart($queryPartName);
- return $this;
- }
- public function createNamedParameter($value, $type = self::PARAM_STR, $placeHolder = null) {
- return $this->builder->createNamedParameter($value, $type, $placeHolder);
- }
- public function createPositionalParameter($value, $type = self::PARAM_STR) {
- return $this->builder->createPositionalParameter($value, $type);
- }
- public function createParameter($name) {
- return $this->builder->createParameter($name);
- }
- public function createFunction($call) {
- return $this->builder->createFunction($call);
- }
- public function getLastInsertId(): int {
- return $this->builder->getLastInsertId();
- }
- public function getTableName($table) {
- return $this->builder->getTableName($table);
- }
- public function getColumnName($column, $tableAlias = '') {
- return $this->builder->getColumnName($column, $tableAlias);
- }
- public function executeQuery(?IDBConnection $connection = null): IResult {
- return $this->builder->executeQuery($connection);
- }
- public function executeStatement(?IDBConnection $connection = null): int {
- return $this->builder->executeStatement($connection);
- }
- public function hintShardKey(string $column, mixed $value, bool $overwrite = false): self {
- $this->builder->hintShardKey($column, $value, $overwrite);
- return $this;
- }
- public function runAcrossAllShards(): self {
- $this->builder->runAcrossAllShards();
- return $this;
- }
- public function getOutputColumns(): array {
- return $this->builder->getOutputColumns();
- }
- public function prefixTableName(string $table): string {
- return $this->builder->prefixTableName($table);
- }
- }
|