diff --git a/lib/private/DB/QueryBuilder/ExpressionBuilder/ExpressionBuilder.php b/lib/private/DB/QueryBuilder/ExpressionBuilder/ExpressionBuilder.php index d4c1a9db88..ebc7f9fb77 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 3e4119bb11..86f7cf4350 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 f41242fdc6..86212c577a 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 141a93ff75..3e8cdd698b 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 1fa0d79663..92f1d9ed3b 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); } } diff --git a/lib/public/DB/QueryBuilder/IExpressionBuilder.php b/lib/public/DB/QueryBuilder/IExpressionBuilder.php index aebc4bde9c..dcba559a96 100644 --- a/lib/public/DB/QueryBuilder/IExpressionBuilder.php +++ b/lib/public/DB/QueryBuilder/IExpressionBuilder.php @@ -78,7 +78,7 @@ interface IExpressionBuilder { * * @psalm-taint-sink sql $x */ - public function andX(...$x); + public function andX(...$x): ICompositeExpression; /** * Creates a disjunction of the given boolean expressions. @@ -97,7 +97,7 @@ interface IExpressionBuilder { * * @psalm-taint-sink sql $x */ - public function orX(...$x); + public function orX(...$x): ICompositeExpression; /** * Creates a comparison expression. @@ -116,7 +116,7 @@ interface IExpressionBuilder { * @psalm-taint-sink sql $y * @psalm-taint-sink sql $type */ - public function comparison($x, $operator, $y, $type = null); + public function comparison($x, string $operator, $y, $type = null): string; /** * Creates an equality comparison expression with the given arguments. @@ -140,7 +140,7 @@ interface IExpressionBuilder { * @psalm-taint-sink sql $y * @psalm-taint-sink sql $type */ - public function eq($x, $y, $type = null); + public function eq($x, $y, $type = null): string; /** * Creates a non equality comparison expression with the given arguments. @@ -163,7 +163,7 @@ interface IExpressionBuilder { * @psalm-taint-sink sql $y * @psalm-taint-sink sql $type */ - public function neq($x, $y, $type = null); + public function neq($x, $y, $type = null): string; /** * Creates a lower-than comparison expression with the given arguments. @@ -186,7 +186,7 @@ interface IExpressionBuilder { * @psalm-taint-sink sql $y * @psalm-taint-sink sql $type */ - public function lt($x, $y, $type = null); + public function lt($x, $y, $type = null): string; /** * Creates a lower-than-equal comparison expression with the given arguments. @@ -209,7 +209,7 @@ interface IExpressionBuilder { * @psalm-taint-sink sql $y * @psalm-taint-sink sql $type */ - public function lte($x, $y, $type = null); + public function lte($x, $y, $type = null): string; /** * Creates a greater-than comparison expression with the given arguments. @@ -232,7 +232,7 @@ interface IExpressionBuilder { * @psalm-taint-sink sql $y * @psalm-taint-sink sql $type */ - public function gt($x, $y, $type = null); + public function gt($x, $y, $type = null): string; /** * Creates a greater-than-equal comparison expression with the given arguments. @@ -255,31 +255,31 @@ interface IExpressionBuilder { * @psalm-taint-sink sql $y * @psalm-taint-sink sql $type */ - public function gte($x, $y, $type = null); + public function gte($x, $y, $type = null): string; /** * 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 * @since 8.2.0 * * @psalm-taint-sink sql $x */ - public function isNull($x); + public function isNull($x): string; /** * 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 * @since 8.2.0 * * @psalm-taint-sink sql $x */ - public function isNotNull($x); + public function isNotNull($x): string; /** * Creates a LIKE() comparison expression with the given arguments. @@ -296,7 +296,7 @@ interface IExpressionBuilder { * @psalm-taint-sink sql $y * @psalm-taint-sink sql $type */ - public function like($x, $y, $type = null); + public function like($x, $y, $type = null): string; /** * Creates a NOT LIKE() comparison expression with the given arguments. @@ -313,7 +313,7 @@ interface IExpressionBuilder { * @psalm-taint-sink sql $y * @psalm-taint-sink sql $type */ - public function notLike($x, $y, $type = null); + public function notLike($x, $y, $type = null): string; /** * Creates a ILIKE() comparison expression with the given arguments. @@ -330,7 +330,7 @@ interface IExpressionBuilder { * @psalm-taint-sink sql $y * @psalm-taint-sink sql $type */ - public function iLike($x, $y, $type = null); + public function iLike($x, $y, $type = null): string; /** * Creates a IN () comparison expression with the given arguments. @@ -347,7 +347,7 @@ interface IExpressionBuilder { * @psalm-taint-sink sql $y * @psalm-taint-sink sql $type */ - public function in($x, $y, $type = null); + public function in($x, $y, $type = null): string; /** * Creates a NOT IN () comparison expression with the given arguments. @@ -364,29 +364,29 @@ interface IExpressionBuilder { * @psalm-taint-sink sql $y * @psalm-taint-sink sql $type */ - public function notIn($x, $y, $type = null); + public function notIn($x, $y, $type = null): string; /** * 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 * * @psalm-taint-sink sql $x */ - public function emptyString($x); + public function emptyString($x): string; /** * 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 * * @psalm-taint-sink sql $x */ - public function nonEmptyString($x); + public function nonEmptyString($x): string; /** @@ -400,7 +400,7 @@ interface IExpressionBuilder { * @psalm-taint-sink sql $x * @psalm-taint-sink sql $y */ - public function bitwiseAnd($x, $y); + public function bitwiseAnd($x, int $y): IQueryFunction; /** * Creates a bitwise OR comparison @@ -413,7 +413,7 @@ interface IExpressionBuilder { * @psalm-taint-sink sql $x * @psalm-taint-sink sql $y */ - public function bitwiseOr($x, $y); + public function bitwiseOr($x, int $y): IQueryFunction; /** * Quotes a given input parameter. @@ -421,24 +421,24 @@ interface IExpressionBuilder { * @param mixed $input The parameter to be quoted. * @param mixed|null $type One of the IQueryBuilder::PARAM_* constants * - * @return string + * @return ILiteral * @since 8.2.0 * * @psalm-taint-sink sql $input * @psalm-taint-sink sql $type */ - public function literal($input, $type = null); + public function literal($input, $type = null): ILiteral; /** * Returns a IQueryFunction that casts the column to the given type * * @param string $column * @param mixed $type One of IQueryBuilder::PARAM_* - * @return string + * @return IQueryFunction * @since 9.0.0 * * @psalm-taint-sink sql $column * @psalm-taint-sink sql $type */ - public function castColumn($column, $type); + public function castColumn(string $column, $type): IQueryFunction; }