diff options
author | Joas Schilling <213943+nickvergessen@users.noreply.github.com> | 2021-03-03 11:37:16 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-03-03 11:37:16 +0100 |
commit | a6246be34cc3238a10261915833262cfbdbace57 (patch) | |
tree | 846cec001425bb0a85270e4b47d5e5e259ea188b /lib/private/DB/QueryBuilder | |
parent | 11858a3d66d7fc7ac6b441310d3dec1cad33b32a (diff) | |
parent | 4bdf9f5849b4a9b1fd7bc98d8d60528f388b0d15 (diff) | |
download | nextcloud-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')
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); } } |