Rename IQueryBuilder::executeUpdate to IQueryBuilder::executeStatement

Because executeUpdate wasn't a great name. And in DBAL they also use
executeStatement more consistently now.

Ref https://github.com/doctrine/dbal/issues/4607

Signed-off-by: Christoph Wurst <christoph@winzerhof-wurst.at>
This commit is contained in:
Christoph Wurst 2021-05-05 10:31:54 +02:00
parent 6d3aef1849
commit 865661ed75
No known key found for this signature in database
GPG Key ID: CC42AC2A7F0E56D8
3 changed files with 24 additions and 9 deletions

View File

@ -309,9 +309,24 @@ class QueryBuilder implements IQueryBuilder {
throw new \RuntimeException('Invalid return type for query'); throw new \RuntimeException('Invalid return type for query');
} }
/**
* Monkey-patched compatibility layer for apps that were adapted for Nextcloud 22 before
* the first beta, where executeStatement was named executeUpdate.
*
* Static analysis should catch those misuses, but until then let's try to keep things
* running.
*
* @internal
* @deprecated
* @todo drop ASAP
*/
public function executeUpdate(): int { public function executeUpdate(): int {
return $this->executeStatement();
}
public function executeStatement(): int {
if ($this->getType() === \Doctrine\DBAL\Query\QueryBuilder::SELECT) { if ($this->getType() === \Doctrine\DBAL\Query\QueryBuilder::SELECT) {
throw new \RuntimeException('Invalid query type, expected INSERT, DELETE or UPDATE query'); throw new \RuntimeException('Invalid query type, expected INSERT, DELETE or UPDATE statement');
} }
try { try {
@ -321,7 +336,7 @@ class QueryBuilder implements IQueryBuilder {
} }
if (!is_int($result)) { if (!is_int($result)) {
throw new \RuntimeException('Invalid return type for query'); throw new \RuntimeException('Invalid return type for statement');
} }
return $result; return $result;

View File

@ -101,7 +101,7 @@ abstract class QBMapper {
->where( ->where(
$qb->expr()->eq('id', $qb->createNamedParameter($entity->getId(), $idType)) $qb->expr()->eq('id', $qb->createNamedParameter($entity->getId(), $idType))
); );
$qb->executeUpdate(); $qb->executeStatement();
return $entity; return $entity;
} }
@ -132,7 +132,7 @@ abstract class QBMapper {
$qb->setValue($column, $qb->createNamedParameter($value, $type)); $qb->setValue($column, $qb->createNamedParameter($value, $type));
} }
$qb->executeUpdate(); $qb->executeStatement();
if ($entity->id === null) { if ($entity->id === null) {
// When autoincrement is used id is always an int // When autoincrement is used id is always an int
@ -211,7 +211,7 @@ abstract class QBMapper {
$qb->where( $qb->where(
$qb->expr()->eq('id', $qb->createNamedParameter($id, $idType)) $qb->expr()->eq('id', $qb->createNamedParameter($id, $idType))
); );
$qb->executeUpdate(); $qb->executeStatement();
return $entity; return $entity;
} }

View File

@ -149,7 +149,7 @@ interface IQueryBuilder {
/** /**
* Executes this query using the bound parameters and their types. * Executes this query using the bound parameters and their types.
* *
* Uses {@see Connection::executeQuery} for select statements and {@see Connection::executeUpdate} * Uses {@see Connection::executeQuery} for select statements and {@see Connection::executeStatement}
* for insert, update and delete statements. * for insert, update and delete statements.
* *
* Warning: until Nextcloud 20, this method could return a \Doctrine\DBAL\Driver\Statement but since * Warning: until Nextcloud 20, this method could return a \Doctrine\DBAL\Driver\Statement but since
@ -175,15 +175,15 @@ interface IQueryBuilder {
public function executeQuery(): IResult; public function executeQuery(): IResult;
/** /**
* Execute for insert, update and delete statements * Execute insert, update and delete statements
* *
* @return int * @return int the number of affected rows
* @since 22.0.0 * @since 22.0.0
* *
* @throws Exception * @throws Exception
* @throws \RuntimeException in case of usage with select query * @throws \RuntimeException in case of usage with select query
*/ */
public function executeUpdate(): int; public function executeStatement(): int;
/** /**
* Gets the complete SQL string formed by the current specifications of this QueryBuilder. * Gets the complete SQL string formed by the current specifications of this QueryBuilder.