Signed-off-by: Joas Schilling <coding@schilljs.com>tags/v21.0.0beta1
@@ -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; | |||
} |