summaryrefslogtreecommitdiffstats
path: root/lib/private/DB/QueryBuilder
diff options
context:
space:
mode:
authorJoas Schilling <213943+nickvergessen@users.noreply.github.com>2021-03-03 11:37:16 +0100
committerGitHub <noreply@github.com>2021-03-03 11:37:16 +0100
commita6246be34cc3238a10261915833262cfbdbace57 (patch)
tree846cec001425bb0a85270e4b47d5e5e259ea188b /lib/private/DB/QueryBuilder
parent11858a3d66d7fc7ac6b441310d3dec1cad33b32a (diff)
parent4bdf9f5849b4a9b1fd7bc98d8d60528f388b0d15 (diff)
downloadnextcloud-server-a6246be34cc3238a10261915833262cfbdbace57.tar.gz
nextcloud-server-a6246be34cc3238a10261915833262cfbdbace57.zip
Merge pull request #25656 from nextcloud/enh/type/expressionbuilder
Type the experssionbuilders
Diffstat (limited to 'lib/private/DB/QueryBuilder')
-rw-r--r--lib/private/DB/QueryBuilder/ExpressionBuilder/ExpressionBuilder.php55
-rw-r--r--lib/private/DB/QueryBuilder/ExpressionBuilder/MySqlExpressionBuilder.php2
-rw-r--r--lib/private/DB/QueryBuilder/ExpressionBuilder/OCIExpressionBuilder.php32
-rw-r--r--lib/private/DB/QueryBuilder/ExpressionBuilder/PgSqlExpressionBuilder.php7
-rw-r--r--lib/private/DB/QueryBuilder/ExpressionBuilder/SqliteExpressionBuilder.php4
5 files changed, 51 insertions, 49 deletions
diff --git a/lib/private/DB/QueryBuilder/ExpressionBuilder/ExpressionBuilder.php b/lib/private/DB/QueryBuilder/ExpressionBuilder/ExpressionBuilder.php
index d4c1a9db881..ebc7f9fb77b 100644
--- a/lib/private/DB/QueryBuilder/ExpressionBuilder/ExpressionBuilder.php
+++ b/lib/private/DB/QueryBuilder/ExpressionBuilder/ExpressionBuilder.php
@@ -33,6 +33,7 @@ use OC\DB\QueryBuilder\FunctionBuilder\FunctionBuilder;
use OC\DB\QueryBuilder\Literal;
use OC\DB\QueryBuilder\QueryFunction;
use OC\DB\QueryBuilder\QuoteHelper;
+use OCP\DB\QueryBuilder\ICompositeExpression;
use OCP\DB\QueryBuilder\IExpressionBuilder;
use OCP\DB\QueryBuilder\ILiteral;
use OCP\DB\QueryBuilder\IParameter;
@@ -80,7 +81,7 @@ class ExpressionBuilder implements IExpressionBuilder {
*
* @return \OCP\DB\QueryBuilder\ICompositeExpression
*/
- public function andX(...$x) {
+ public function andX(...$x): ICompositeExpression {
$compositeExpression = call_user_func_array([$this->expressionBuilder, 'andX'], $x);
return new CompositeExpression($compositeExpression);
}
@@ -99,7 +100,7 @@ class ExpressionBuilder implements IExpressionBuilder {
*
* @return \OCP\DB\QueryBuilder\ICompositeExpression
*/
- public function orX(...$x) {
+ public function orX(...$x): ICompositeExpression {
$compositeExpression = call_user_func_array([$this->expressionBuilder, 'orX'], $x);
return new CompositeExpression($compositeExpression);
}
@@ -115,7 +116,7 @@ class ExpressionBuilder implements IExpressionBuilder {
*
* @return string
*/
- public function comparison($x, $operator, $y, $type = null) {
+ public function comparison($x, string $operator, $y, $type = null): string {
$x = $this->helper->quoteColumnName($x);
$y = $this->helper->quoteColumnName($y);
return $this->expressionBuilder->comparison($x, $operator, $y);
@@ -138,7 +139,7 @@ class ExpressionBuilder implements IExpressionBuilder {
*
* @return string
*/
- public function eq($x, $y, $type = null) {
+ public function eq($x, $y, $type = null): string {
$x = $this->helper->quoteColumnName($x);
$y = $this->helper->quoteColumnName($y);
return $this->expressionBuilder->eq($x, $y);
@@ -160,7 +161,7 @@ class ExpressionBuilder implements IExpressionBuilder {
*
* @return string
*/
- public function neq($x, $y, $type = null) {
+ public function neq($x, $y, $type = null): string {
$x = $this->helper->quoteColumnName($x);
$y = $this->helper->quoteColumnName($y);
return $this->expressionBuilder->neq($x, $y);
@@ -182,7 +183,7 @@ class ExpressionBuilder implements IExpressionBuilder {
*
* @return string
*/
- public function lt($x, $y, $type = null) {
+ public function lt($x, $y, $type = null): string {
$x = $this->helper->quoteColumnName($x);
$y = $this->helper->quoteColumnName($y);
return $this->expressionBuilder->lt($x, $y);
@@ -204,7 +205,7 @@ class ExpressionBuilder implements IExpressionBuilder {
*
* @return string
*/
- public function lte($x, $y, $type = null) {
+ public function lte($x, $y, $type = null): string {
$x = $this->helper->quoteColumnName($x);
$y = $this->helper->quoteColumnName($y);
return $this->expressionBuilder->lte($x, $y);
@@ -226,7 +227,7 @@ class ExpressionBuilder implements IExpressionBuilder {
*
* @return string
*/
- public function gt($x, $y, $type = null) {
+ public function gt($x, $y, $type = null): string {
$x = $this->helper->quoteColumnName($x);
$y = $this->helper->quoteColumnName($y);
return $this->expressionBuilder->gt($x, $y);
@@ -248,7 +249,7 @@ class ExpressionBuilder implements IExpressionBuilder {
*
* @return string
*/
- public function gte($x, $y, $type = null) {
+ public function gte($x, $y, $type = null): string {
$x = $this->helper->quoteColumnName($x);
$y = $this->helper->quoteColumnName($y);
return $this->expressionBuilder->gte($x, $y);
@@ -257,11 +258,11 @@ class ExpressionBuilder implements IExpressionBuilder {
/**
* Creates an IS NULL expression with the given arguments.
*
- * @param string $x The field in string format to be restricted by IS NULL.
+ * @param string|ILiteral|IParameter|IQueryFunction $x The field in string format to be restricted by IS NULL.
*
* @return string
*/
- public function isNull($x) {
+ public function isNull($x): string {
$x = $this->helper->quoteColumnName($x);
return $this->expressionBuilder->isNull($x);
}
@@ -269,11 +270,11 @@ class ExpressionBuilder implements IExpressionBuilder {
/**
* Creates an IS NOT NULL expression with the given arguments.
*
- * @param string $x The field in string format to be restricted by IS NOT NULL.
+ * @param string|ILiteral|IParameter|IQueryFunction $x The field in string format to be restricted by IS NOT NULL.
*
* @return string
*/
- public function isNotNull($x) {
+ public function isNotNull($x): string {
$x = $this->helper->quoteColumnName($x);
return $this->expressionBuilder->isNotNull($x);
}
@@ -288,7 +289,7 @@ class ExpressionBuilder implements IExpressionBuilder {
*
* @return string
*/
- public function like($x, $y, $type = null) {
+ public function like($x, $y, $type = null): string {
$x = $this->helper->quoteColumnName($x);
$y = $this->helper->quoteColumnName($y);
return $this->expressionBuilder->like($x, $y);
@@ -305,7 +306,7 @@ class ExpressionBuilder implements IExpressionBuilder {
* @return string
* @since 9.0.0
*/
- public function iLike($x, $y, $type = null) {
+ public function iLike($x, $y, $type = null): string {
return $this->expressionBuilder->like($this->functionBuilder->lower($x), $this->functionBuilder->lower($y));
}
@@ -319,7 +320,7 @@ class ExpressionBuilder implements IExpressionBuilder {
*
* @return string
*/
- public function notLike($x, $y, $type = null) {
+ public function notLike($x, $y, $type = null): string {
$x = $this->helper->quoteColumnName($x);
$y = $this->helper->quoteColumnName($y);
return $this->expressionBuilder->notLike($x, $y);
@@ -335,7 +336,7 @@ class ExpressionBuilder implements IExpressionBuilder {
*
* @return string
*/
- public function in($x, $y, $type = null) {
+ public function in($x, $y, $type = null): string {
$x = $this->helper->quoteColumnName($x);
$y = $this->helper->quoteColumnNames($y);
return $this->expressionBuilder->in($x, $y);
@@ -351,7 +352,7 @@ class ExpressionBuilder implements IExpressionBuilder {
*
* @return string
*/
- public function notIn($x, $y, $type = null) {
+ public function notIn($x, $y, $type = null): string {
$x = $this->helper->quoteColumnName($x);
$y = $this->helper->quoteColumnNames($y);
return $this->expressionBuilder->notIn($x, $y);
@@ -360,22 +361,22 @@ class ExpressionBuilder implements IExpressionBuilder {
/**
* Creates a $x = '' statement, because Oracle needs a different check
*
- * @param string $x The field in string format to be inspected by the comparison.
+ * @param string|ILiteral|IParameter|IQueryFunction $x The field in string format to be inspected by the comparison.
* @return string
* @since 13.0.0
*/
- public function emptyString($x) {
+ public function emptyString($x): string {
return $this->eq($x, $this->literal('', IQueryBuilder::PARAM_STR));
}
/**
* Creates a `$x <> ''` statement, because Oracle needs a different check
*
- * @param string $x The field in string format to be inspected by the comparison.
+ * @param string|ILiteral|IParameter|IQueryFunction $x The field in string format to be inspected by the comparison.
* @return string
* @since 13.0.0
*/
- public function nonEmptyString($x) {
+ public function nonEmptyString($x): string {
return $this->neq($x, $this->literal('', IQueryBuilder::PARAM_STR));
}
@@ -387,7 +388,7 @@ class ExpressionBuilder implements IExpressionBuilder {
* @return IQueryFunction
* @since 12.0.0
*/
- public function bitwiseAnd($x, $y) {
+ public function bitwiseAnd($x, int $y): IQueryFunction {
return new QueryFunction($this->connection->getDatabasePlatform()->getBitAndComparisonExpression(
$this->helper->quoteColumnName($x),
$y
@@ -402,7 +403,7 @@ class ExpressionBuilder implements IExpressionBuilder {
* @return IQueryFunction
* @since 12.0.0
*/
- public function bitwiseOr($x, $y) {
+ public function bitwiseOr($x, int $y): IQueryFunction {
return new QueryFunction($this->connection->getDatabasePlatform()->getBitOrComparisonExpression(
$this->helper->quoteColumnName($x),
$y
@@ -417,7 +418,7 @@ class ExpressionBuilder implements IExpressionBuilder {
*
* @return ILiteral
*/
- public function literal($input, $type = null) {
+ public function literal($input, $type = null): ILiteral {
return new Literal($this->expressionBuilder->literal($input, $type));
}
@@ -426,9 +427,9 @@ class ExpressionBuilder implements IExpressionBuilder {
*
* @param string $column
* @param mixed $type One of IQueryBuilder::PARAM_*
- * @return string
+ * @return IQueryFunction
*/
- public function castColumn($column, $type) {
+ public function castColumn(string $column, $type): IQueryFunction {
return new QueryFunction(
$this->helper->quoteColumnName($column)
);
diff --git a/lib/private/DB/QueryBuilder/ExpressionBuilder/MySqlExpressionBuilder.php b/lib/private/DB/QueryBuilder/ExpressionBuilder/MySqlExpressionBuilder.php
index 3e4119bb11c..86f7cf43508 100644
--- a/lib/private/DB/QueryBuilder/ExpressionBuilder/MySqlExpressionBuilder.php
+++ b/lib/private/DB/QueryBuilder/ExpressionBuilder/MySqlExpressionBuilder.php
@@ -46,7 +46,7 @@ class MySqlExpressionBuilder extends ExpressionBuilder {
/**
* @inheritdoc
*/
- public function iLike($x, $y, $type = null) {
+ public function iLike($x, $y, $type = null): string {
$x = $this->helper->quoteColumnName($x);
$y = $this->helper->quoteColumnName($y);
return $this->expressionBuilder->comparison($x, ' COLLATE ' . $this->charset . '_general_ci LIKE', $y);
diff --git a/lib/private/DB/QueryBuilder/ExpressionBuilder/OCIExpressionBuilder.php b/lib/private/DB/QueryBuilder/ExpressionBuilder/OCIExpressionBuilder.php
index f41242fdc60..86212c577a7 100644
--- a/lib/private/DB/QueryBuilder/ExpressionBuilder/OCIExpressionBuilder.php
+++ b/lib/private/DB/QueryBuilder/ExpressionBuilder/OCIExpressionBuilder.php
@@ -49,7 +49,7 @@ class OCIExpressionBuilder extends ExpressionBuilder {
/**
* @inheritdoc
*/
- public function comparison($x, $operator, $y, $type = null) {
+ public function comparison($x, string $operator, $y, $type = null): string {
$x = $this->prepareColumn($x, $type);
$y = $this->prepareColumn($y, $type);
@@ -59,7 +59,7 @@ class OCIExpressionBuilder extends ExpressionBuilder {
/**
* @inheritdoc
*/
- public function eq($x, $y, $type = null) {
+ public function eq($x, $y, $type = null): string {
$x = $this->prepareColumn($x, $type);
$y = $this->prepareColumn($y, $type);
@@ -69,7 +69,7 @@ class OCIExpressionBuilder extends ExpressionBuilder {
/**
* @inheritdoc
*/
- public function neq($x, $y, $type = null) {
+ public function neq($x, $y, $type = null): string {
$x = $this->prepareColumn($x, $type);
$y = $this->prepareColumn($y, $type);
@@ -79,7 +79,7 @@ class OCIExpressionBuilder extends ExpressionBuilder {
/**
* @inheritdoc
*/
- public function lt($x, $y, $type = null) {
+ public function lt($x, $y, $type = null): string {
$x = $this->prepareColumn($x, $type);
$y = $this->prepareColumn($y, $type);
@@ -89,7 +89,7 @@ class OCIExpressionBuilder extends ExpressionBuilder {
/**
* @inheritdoc
*/
- public function lte($x, $y, $type = null) {
+ public function lte($x, $y, $type = null): string {
$x = $this->prepareColumn($x, $type);
$y = $this->prepareColumn($y, $type);
@@ -99,7 +99,7 @@ class OCIExpressionBuilder extends ExpressionBuilder {
/**
* @inheritdoc
*/
- public function gt($x, $y, $type = null) {
+ public function gt($x, $y, $type = null): string {
$x = $this->prepareColumn($x, $type);
$y = $this->prepareColumn($y, $type);
@@ -109,7 +109,7 @@ class OCIExpressionBuilder extends ExpressionBuilder {
/**
* @inheritdoc
*/
- public function gte($x, $y, $type = null) {
+ public function gte($x, $y, $type = null): string {
$x = $this->prepareColumn($x, $type);
$y = $this->prepareColumn($y, $type);
@@ -119,7 +119,7 @@ class OCIExpressionBuilder extends ExpressionBuilder {
/**
* @inheritdoc
*/
- public function in($x, $y, $type = null) {
+ public function in($x, $y, $type = null): string {
$x = $this->prepareColumn($x, $type);
$y = $this->prepareColumn($y, $type);
@@ -129,7 +129,7 @@ class OCIExpressionBuilder extends ExpressionBuilder {
/**
* @inheritdoc
*/
- public function notIn($x, $y, $type = null) {
+ public function notIn($x, $y, $type = null): string {
$x = $this->prepareColumn($x, $type);
$y = $this->prepareColumn($y, $type);
@@ -139,22 +139,22 @@ class OCIExpressionBuilder extends ExpressionBuilder {
/**
* Creates a $x = '' statement, because Oracle needs a different check
*
- * @param string $x The field in string format to be inspected by the comparison.
+ * @param string|ILiteral|IParameter|IQueryFunction $x The field in string format to be inspected by the comparison.
* @return string
* @since 13.0.0
*/
- public function emptyString($x) {
+ public function emptyString($x): string {
return $this->isNull($x);
}
/**
* Creates a `$x <> ''` statement, because Oracle needs a different check
*
- * @param string $x The field in string format to be inspected by the comparison.
+ * @param string|ILiteral|IParameter|IQueryFunction $x The field in string format to be inspected by the comparison.
* @return string
* @since 13.0.0
*/
- public function nonEmptyString($x) {
+ public function nonEmptyString($x): string {
return $this->isNotNull($x);
}
@@ -165,7 +165,7 @@ class OCIExpressionBuilder extends ExpressionBuilder {
* @param mixed $type One of IQueryBuilder::PARAM_*
* @return IQueryFunction
*/
- public function castColumn($column, $type) {
+ public function castColumn(string $column, $type): IQueryFunction {
if ($type === IQueryBuilder::PARAM_STR) {
$column = $this->helper->quoteColumnName($column);
return new QueryFunction('to_char(' . $column . ')');
@@ -181,14 +181,14 @@ class OCIExpressionBuilder extends ExpressionBuilder {
/**
* @inheritdoc
*/
- public function like($x, $y, $type = null) {
+ public function like($x, $y, $type = null): string {
return parent::like($x, $y, $type) . " ESCAPE '\\'";
}
/**
* @inheritdoc
*/
- public function iLike($x, $y, $type = null) {
+ public function iLike($x, $y, $type = null): string {
return $this->like($this->functionBuilder->lower($x), $this->functionBuilder->lower($y));
}
}
diff --git a/lib/private/DB/QueryBuilder/ExpressionBuilder/PgSqlExpressionBuilder.php b/lib/private/DB/QueryBuilder/ExpressionBuilder/PgSqlExpressionBuilder.php
index 141a93ff75a..3e8cdd698b4 100644
--- a/lib/private/DB/QueryBuilder/ExpressionBuilder/PgSqlExpressionBuilder.php
+++ b/lib/private/DB/QueryBuilder/ExpressionBuilder/PgSqlExpressionBuilder.php
@@ -26,6 +26,7 @@ namespace OC\DB\QueryBuilder\ExpressionBuilder;
use OC\DB\QueryBuilder\QueryFunction;
use OCP\DB\QueryBuilder\IQueryBuilder;
+use OCP\DB\QueryBuilder\IQueryFunction;
class PgSqlExpressionBuilder extends ExpressionBuilder {
@@ -34,9 +35,9 @@ class PgSqlExpressionBuilder extends ExpressionBuilder {
*
* @param string $column
* @param mixed $type One of IQueryBuilder::PARAM_*
- * @return string
+ * @return IQueryFunction
*/
- public function castColumn($column, $type) {
+ public function castColumn($column, $type): IQueryFunction {
switch ($type) {
case IQueryBuilder::PARAM_INT:
return new QueryFunction('CAST(' . $this->helper->quoteColumnName($column) . ' AS INT)');
@@ -50,7 +51,7 @@ class PgSqlExpressionBuilder extends ExpressionBuilder {
/**
* @inheritdoc
*/
- public function iLike($x, $y, $type = null) {
+ public function iLike($x, $y, $type = null): string {
$x = $this->helper->quoteColumnName($x);
$y = $this->helper->quoteColumnName($y);
return $this->expressionBuilder->comparison($x, 'ILIKE', $y);
diff --git a/lib/private/DB/QueryBuilder/ExpressionBuilder/SqliteExpressionBuilder.php b/lib/private/DB/QueryBuilder/ExpressionBuilder/SqliteExpressionBuilder.php
index 1fa0d79663a..92f1d9ed3b6 100644
--- a/lib/private/DB/QueryBuilder/ExpressionBuilder/SqliteExpressionBuilder.php
+++ b/lib/private/DB/QueryBuilder/ExpressionBuilder/SqliteExpressionBuilder.php
@@ -27,11 +27,11 @@ class SqliteExpressionBuilder extends ExpressionBuilder {
/**
* @inheritdoc
*/
- public function like($x, $y, $type = null) {
+ public function like($x, $y, $type = null): string {
return parent::like($x, $y, $type) . " ESCAPE '\\'";
}
- public function iLike($x, $y, $type = null) {
+ public function iLike($x, $y, $type = null): string {
return $this->like($this->functionBuilder->lower($x), $this->functionBuilder->lower($y), $type);
}
}