Merge pull request #24163 from nextcloud/techdebt/noid/add-types-to-function-builder
Add types to function builder
This commit is contained in:
commit
b24b74f03b
|
@ -27,8 +27,6 @@ namespace OC\DB\QueryBuilder\FunctionBuilder;
|
|||
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 {
|
||||
|
@ -44,15 +42,15 @@ class FunctionBuilder implements IFunctionBuilder {
|
|||
$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 {
|
||||
|
@ -60,51 +58,41 @@ class FunctionBuilder implements IFunctionBuilder {
|
|||
}
|
||||
}
|
||||
|
||||
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) . ')');
|
||||
}
|
||||
}
|
||||
|
|
|
@ -29,7 +29,7 @@ use OCP\DB\QueryBuilder\IParameter;
|
|||
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) .')))');
|
||||
}
|
||||
|
||||
|
@ -45,7 +45,7 @@ class OCIFunctionBuilder extends FunctionBuilder {
|
|||
* @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);
|
||||
}
|
||||
|
@ -65,7 +65,7 @@ class OCIFunctionBuilder extends FunctionBuilder {
|
|||
* @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);
|
||||
}
|
||||
|
|
|
@ -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) . ')');
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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) . ')');
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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
|
||||
|
@ -142,7 +142,7 @@ interface IFunctionBuilder {
|
|||
* @return IQueryFunction
|
||||
* @since 18.0.0
|
||||
*/
|
||||
public function greatest($x, $y);
|
||||
public function greatest($x, $y): IQueryFunction;
|
||||
|
||||
/**
|
||||
* Takes the minimum of multiple values
|
||||
|
@ -154,5 +154,5 @@ interface IFunctionBuilder {
|
|||
* @return IQueryFunction
|
||||
* @since 18.0.0
|
||||
*/
|
||||
public function least($x, $y);
|
||||
public function least($x, $y): IQueryFunction;
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue