Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add types to function builder #24163

Merged
merged 2 commits into from
Nov 17, 2020
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion build/psalm-baseline.xml
Original file line number Diff line number Diff line change
Expand Up @@ -5117,7 +5117,7 @@
<code>'OCP\Share::preShare'</code>
<code>'OCP\Share::preUnshare'</code>
</InvalidArgument>
<InvalidScalarArgument occurrences="3">
<InvalidScalarArgument occurrences="2">
<code>$id</code>
<code>$this-&gt;shareApiLinkDefaultExpireDays()</code>
<code>$this-&gt;shareApiLinkDefaultExpireDays()</code>
Expand Down
36 changes: 12 additions & 24 deletions lib/private/DB/QueryBuilder/FunctionBuilder/FunctionBuilder.php
Original file line number Diff line number Diff line change
Expand Up @@ -27,8 +27,6 @@
use OC\DB\QueryBuilder\QueryFunction;
use OC\DB\QueryBuilder\QuoteHelper;
use OCP\DB\QueryBuilder\IFunctionBuilder;
use OCP\DB\QueryBuilder\ILiteral;
use OCP\DB\QueryBuilder\IParameter;
use OCP\DB\QueryBuilder\IQueryFunction;

class FunctionBuilder implements IFunctionBuilder {
Expand All @@ -44,67 +42,57 @@ public function __construct(QuoteHelper $helper) {
$this->helper = $helper;
}

public function md5($input) {
public function md5($input): IQueryFunction {
return new QueryFunction('MD5(' . $this->helper->quoteColumnName($input) . ')');
}

public function concat($x, $y) {
public function concat($x, $y): IQueryFunction {
return new QueryFunction('CONCAT(' . $this->helper->quoteColumnName($x) . ', ' . $this->helper->quoteColumnName($y) . ')');
}

public function substring($input, $start, $length = null) {
public function substring($input, $start, $length = null): IQueryFunction {
if ($length) {
return new QueryFunction('SUBSTR(' . $this->helper->quoteColumnName($input) . ', ' . $this->helper->quoteColumnName($start) . ', ' . $this->helper->quoteColumnName($length) . ')');
} else {
return new QueryFunction('SUBSTR(' . $this->helper->quoteColumnName($input) . ', ' . $this->helper->quoteColumnName($start) . ')');
}
}

public function sum($field) {
public function sum($field): IQueryFunction {
return new QueryFunction('SUM(' . $this->helper->quoteColumnName($field) . ')');
}

public function lower($field) {
public function lower($field): IQueryFunction {
return new QueryFunction('LOWER(' . $this->helper->quoteColumnName($field) . ')');
}

public function add($x, $y) {
public function add($x, $y): IQueryFunction {
return new QueryFunction($this->helper->quoteColumnName($x) . ' + ' . $this->helper->quoteColumnName($y));
}

public function subtract($x, $y) {
public function subtract($x, $y): IQueryFunction {
return new QueryFunction($this->helper->quoteColumnName($x) . ' - ' . $this->helper->quoteColumnName($y));
}

public function count($count = '', $alias = '') {
public function count($count = '', $alias = ''): IQueryFunction {
$alias = $alias ? (' AS ' . $this->helper->quoteColumnName($alias)) : '';
$quotedName = $count === '' ? '*' : $this->helper->quoteColumnName($count);
return new QueryFunction('COUNT(' . $quotedName . ')' . $alias);
}

public function max($field) {
public function max($field): IQueryFunction {
return new QueryFunction('MAX(' . $this->helper->quoteColumnName($field) . ')');
}

public function min($field) {
public function min($field): IQueryFunction {
return new QueryFunction('MIN(' . $this->helper->quoteColumnName($field) . ')');
}

/**
* @param string|ILiteral|IParameter|IQueryFunction $x
* @param string|ILiteral|IParameter|IQueryFunction $y
* @return IQueryFunction
*/
public function greatest($x, $y) {
public function greatest($x, $y): IQueryFunction {
return new QueryFunction('GREATEST(' . $this->helper->quoteColumnName($x) . ', ' . $this->helper->quoteColumnName($y) . ')');
}

/**
* @param string|ILiteral|IParameter|IQueryFunction $x
* @param string|ILiteral|IParameter|IQueryFunction $y
* @return IQueryFunction
*/
public function least($x, $y) {
public function least($x, $y): IQueryFunction {
return new QueryFunction('LEAST(' . $this->helper->quoteColumnName($x) . ', ' . $this->helper->quoteColumnName($y) . ')');
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,7 @@
use OCP\DB\QueryBuilder\IQueryFunction;

class OCIFunctionBuilder extends FunctionBuilder {
public function md5($input) {
public function md5($input): IQueryFunction {
return new QueryFunction('LOWER(DBMS_OBFUSCATION_TOOLKIT.md5 (input => UTL_RAW.cast_to_raw(' . $this->helper->quoteColumnName($input) .')))');
}

Expand All @@ -45,7 +45,7 @@ public function md5($input) {
* @param string|ILiteral|IParameter|IQueryFunction $y
* @return IQueryFunction
*/
public function greatest($x, $y) {
public function greatest($x, $y): IQueryFunction {
if (is_string($y) || $y instanceof IQueryFunction) {
return parent::greatest($y, $x);
}
Expand All @@ -65,7 +65,7 @@ public function greatest($x, $y) {
* @param string|ILiteral|IParameter|IQueryFunction $y
* @return IQueryFunction
*/
public function least($x, $y) {
public function least($x, $y): IQueryFunction {
if (is_string($y) || $y instanceof IQueryFunction) {
return parent::least($y, $x);
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -25,9 +25,10 @@
namespace OC\DB\QueryBuilder\FunctionBuilder;

use OC\DB\QueryBuilder\QueryFunction;
use OCP\DB\QueryBuilder\IQueryFunction;

class PgSqlFunctionBuilder extends FunctionBuilder {
public function concat($x, $y) {
public function concat($x, $y): IQueryFunction {
return new QueryFunction('(' . $this->helper->quoteColumnName($x) . ' || ' . $this->helper->quoteColumnName($y) . ')');
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -25,30 +25,18 @@
namespace OC\DB\QueryBuilder\FunctionBuilder;

use OC\DB\QueryBuilder\QueryFunction;
use OCP\DB\QueryBuilder\ILiteral;
use OCP\DB\QueryBuilder\IParameter;
use OCP\DB\QueryBuilder\IQueryFunction;

class SqliteFunctionBuilder extends FunctionBuilder {
public function concat($x, $y) {
public function concat($x, $y): IQueryFunction {
return new QueryFunction('(' . $this->helper->quoteColumnName($x) . ' || ' . $this->helper->quoteColumnName($y) . ')');
}

/**
* @param string|ILiteral|IParameter|IQueryFunction $x
* @param string|ILiteral|IParameter|IQueryFunction $y
* @return IQueryFunction
*/
public function greatest($x, $y) {
public function greatest($x, $y): IQueryFunction {
return new QueryFunction('MAX(' . $this->helper->quoteColumnName($x) . ', ' . $this->helper->quoteColumnName($y) . ')');
}

/**
* @param string|ILiteral|IParameter|IQueryFunction $x
* @param string|ILiteral|IParameter|IQueryFunction $y
* @return IQueryFunction
*/
public function least($x, $y) {
public function least($x, $y): IQueryFunction {
return new QueryFunction('MIN(' . $this->helper->quoteColumnName($x) . ', ' . $this->helper->quoteColumnName($y) . ')');
}
}
54 changes: 27 additions & 27 deletions lib/public/DB/QueryBuilder/IFunctionBuilder.php
Original file line number Diff line number Diff line change
Expand Up @@ -34,103 +34,103 @@ interface IFunctionBuilder {
/**
* Calculates the MD5 hash of a given input
*
* @param mixed $input The input to be hashed
* @param string|ILiteral|IParameter|IQueryFunction $input The input to be hashed
*
* @return IQueryFunction
* @since 12.0.0
*/
public function md5($input);
public function md5($input): IQueryFunction;

/**
* Combines two input strings
*
* @param mixed $x The first input string
* @param mixed $y The seccond input string
* @param string|ILiteral|IParameter|IQueryFunction $x The first input string
* @param string|ILiteral|IParameter|IQueryFunction $y The seccond input string
*
* @return IQueryFunction
* @since 12.0.0
*/
public function concat($x, $y);
public function concat($x, $y): IQueryFunction;

/**
* Takes a substring from the input string
*
* @param mixed $input The input string
* @param mixed $start The start of the substring, note that counting starts at 1
* @param mixed $length The length of the substring
* @param string|ILiteral|IParameter|IQueryFunction $input The input string
* @param string|ILiteral|IParameter|IQueryFunction $start The start of the substring, note that counting starts at 1
* @param null|ILiteral|IParameter|IQueryFunction $length The length of the substring
*
* @return IQueryFunction
* @since 12.0.0
*/
public function substring($input, $start, $length = null);
public function substring($input, $start, $length = null): IQueryFunction;

/**
* Takes the sum of all rows in a column
*
* @param mixed $field the column to sum
* @param string|ILiteral|IParameter|IQueryFunction $field the column to sum
*
* @return IQueryFunction
* @since 12.0.0
*/
public function sum($field);
public function sum($field): IQueryFunction;

/**
* Transforms a string field or value to lower case
*
* @param mixed $field
* @param string|ILiteral|IParameter|IQueryFunction $field
* @return IQueryFunction
* @since 14.0.0
*/
public function lower($field);
public function lower($field): IQueryFunction;

/**
* @param mixed $x The first input field or number
* @param mixed $y The second input field or number
* @param string|ILiteral|IParameter|IQueryFunction $x The first input field or number
* @param string|ILiteral|IParameter|IQueryFunction $y The second input field or number
* @return IQueryFunction
* @since 14.0.0
*/
public function add($x, $y);
public function add($x, $y): IQueryFunction;

/**
* @param mixed $x The first input field or number
* @param mixed $y The second input field or number
* @param string|ILiteral|IParameter|IQueryFunction $x The first input field or number
* @param string|ILiteral|IParameter|IQueryFunction $y The second input field or number
* @return IQueryFunction
* @since 14.0.0
*/
public function subtract($x, $y);
public function subtract($x, $y): IQueryFunction;

/**
* @param mixed $count The input to be counted
* @param string|ILiteral|IParameter|IQueryFunction $count The input to be counted
* @param string $alias Alias for the counter
*
* @return IQueryFunction
* @since 14.0.0
*/
public function count($count = '', $alias = '');
public function count($count = '', $alias = ''): IQueryFunction;

/**
* Takes the maximum of all rows in a column
*
* If you want to get the maximum value of multiple columns in the same row, use `greatest` instead
*
* @param mixed $field the column to maximum
* @param string|ILiteral|IParameter|IQueryFunction $field the column to maximum
*
* @return IQueryFunction
* @since 18.0.0
*/
public function max($field);
public function max($field): IQueryFunction;

/**
* Takes the minimum of all rows in a column
*
* If you want to get the minimum value of multiple columns in the same row, use `least` instead
*
* @param mixed $field the column to minimum
* @param string|ILiteral|IParameter|IQueryFunction $field the column to minimum
*
* @return IQueryFunction
* @since 18.0.0
*/
public function min($field);
public function min($field): IQueryFunction;

/**
* Takes the maximum of multiple values
Expand All @@ -142,7 +142,7 @@ public function min($field);
* @return IQueryFunction
* @since 18.0.0
*/
public function greatest($x, $y);
public function greatest($x, $y): IQueryFunction;

/**
* Takes the minimum of multiple values
Expand All @@ -154,5 +154,5 @@ public function greatest($x, $y);
* @return IQueryFunction
* @since 18.0.0
*/
public function least($x, $y);
public function least($x, $y): IQueryFunction;
}