Add executeQuery and executeUpdate
Names shamelessly copied from Doctrine itself. Internally it is still using the same flow. But I added some checks around it. This should make static analysis a bit more happy. Which in turn makes me more happy. Signed-off-by: Roeland Jago Douma <roeland@famdouma.nl>
This commit is contained in:
parent
9b573c6bd5
commit
76a6328d10
|
@ -291,6 +291,43 @@ class QueryBuilder implements IQueryBuilder {
|
|||
return new ResultAdapter($result);
|
||||
}
|
||||
|
||||
public function executeQuery(): IResult {
|
||||
if ($this->getType() !== \Doctrine\DBAL\Query\QueryBuilder::SELECT) {
|
||||
throw new \RuntimeException('Invalid query type, expected SELECT query');
|
||||
}
|
||||
|
||||
try {
|
||||
$result = $this->execute();
|
||||
} catch (\Doctrine\DBAL\Exception $e) {
|
||||
throw \OC\DB\Exceptions\DbalException::wrap($e);
|
||||
}
|
||||
|
||||
if ($result instanceof IResult) {
|
||||
return $result;
|
||||
}
|
||||
|
||||
throw new \RuntimeException('Invalid return type for query');
|
||||
}
|
||||
|
||||
public function executeUpdate(): int {
|
||||
if ($this->getType() === \Doctrine\DBAL\Query\QueryBuilder::SELECT) {
|
||||
throw new \RuntimeException('Invalid query type, expected INSERT, DELETE or UPDATE query');
|
||||
}
|
||||
|
||||
try {
|
||||
$result = $this->execute();
|
||||
} catch (\Doctrine\DBAL\Exception $e) {
|
||||
throw \OC\DB\Exceptions\DbalException::wrap($e);
|
||||
}
|
||||
|
||||
if (!is_int($result)) {
|
||||
throw new \RuntimeException('Invalid return type for query');
|
||||
}
|
||||
|
||||
return $result;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Gets the complete SQL string formed by the current specifications of this QueryBuilder.
|
||||
*
|
||||
|
|
|
@ -159,9 +159,32 @@ interface IQueryBuilder {
|
|||
* @return IResult|int
|
||||
* @throws Exception since 21.0.0
|
||||
* @since 8.2.0
|
||||
* @deprecated 22.0.0 Use executeQuery or executeUpdate
|
||||
*/
|
||||
public function execute();
|
||||
|
||||
/**
|
||||
* Execute for select statements
|
||||
*
|
||||
* @return IResult
|
||||
* @since 22.0.0
|
||||
*
|
||||
* @throws Exception
|
||||
* @throws \RuntimeException in case of usage with non select query
|
||||
*/
|
||||
public function executeQuery(): IResult;
|
||||
|
||||
/**
|
||||
* Execute for insert, update and delete statements
|
||||
*
|
||||
* @return int
|
||||
* @since 22.0.0
|
||||
*
|
||||
* @throws Exception
|
||||
* @throws \RuntimeException in case of usage with select query
|
||||
*/
|
||||
public function executeUpdate(): int;
|
||||
|
||||
/**
|
||||
* Gets the complete SQL string formed by the current specifications of this QueryBuilder.
|
||||
*
|
||||
|
|
Loading…
Reference in New Issue