Skip to content

Commit b912142

Browse files
committed
refactor(database): clean up update query builder
1 parent e593698 commit b912142

File tree

1 file changed

+32
-38
lines changed

1 file changed

+32
-38
lines changed

packages/database/src/Builder/QueryBuilders/UpdateQueryBuilder.php

Lines changed: 32 additions & 38 deletions
Original file line numberDiff line numberDiff line change
@@ -348,11 +348,11 @@ private function deleteExistingHasManyRelations($hasMany, PrimaryKey $parentId):
348348
? $this->removeTablePrefix($hasMany->ownerJoin)
349349
: $this->getDefaultForeignKeyName();
350350

351-
$this->executeQuery(
352-
sql: 'DELETE FROM %s WHERE %s = ?',
353-
params: [$relatedModel->getTableName(), $foreignKey],
354-
bindings: [$parentId->value],
355-
);
351+
new DeleteQueryBuilder($relatedModel->getName())
352+
->where($foreignKey, $parentId->value)
353+
->build()
354+
->onDatabase($this->onDatabase)
355+
->execute();
356356
}
357357

358358
private function deleteExistingHasOneRelation($hasOne, PrimaryKey $parentId): void
@@ -375,29 +375,29 @@ private function deleteCustomHasOneRelation($hasOne, PrimaryKey $parentId): void
375375

376376
$foreignKeyColumn = $hasOne->relationJoin ?? $this->removeTablePrefix($hasOne->ownerJoin);
377377

378-
$result = $this->executeQuery(
379-
sql: 'SELECT %s FROM %s WHERE %s = ?',
380-
params: [$foreignKeyColumn, $ownerModel->getTableName(), $ownerModel->getPrimaryKey()],
381-
bindings: [$parentId->value],
382-
);
378+
$result = new SelectQueryBuilder($ownerModel->getName(), new ImmutableArray([$foreignKeyColumn]))
379+
->where($ownerModel->getPrimaryKey(), $parentId->value)
380+
->build()
381+
->onDatabase($this->onDatabase)
382+
->fetchFirst();
383383

384-
if (! $result || ! isset($result[0][$foreignKeyColumn])) {
384+
if (! $result || ! isset($result[$foreignKeyColumn])) {
385385
return;
386386
}
387387

388-
$relatedId = $result[0][$foreignKeyColumn];
388+
$relatedId = $result[$foreignKeyColumn];
389389

390-
$this->executeQuery(
391-
sql: 'DELETE FROM %s WHERE %s = ?',
392-
params: [$relatedModel->getTableName(), $relatedModel->getPrimaryKey()],
393-
bindings: [$relatedId],
394-
);
390+
new DeleteQueryBuilder($relatedModel->getName())
391+
->where($relatedModel->getPrimaryKey(), $relatedId)
392+
->build()
393+
->onDatabase($this->onDatabase)
394+
->execute();
395395

396-
$this->executeQuery(
397-
sql: 'UPDATE %s SET %s = NULL WHERE %s = ?',
398-
params: [$ownerModel->getTableName(), $foreignKeyColumn, $ownerModel->getPrimaryKey()],
399-
bindings: [$parentId->value],
400-
);
396+
new UpdateQueryBuilder($ownerModel->getName(), [$foreignKeyColumn => null], $this->serializerFactory)
397+
->where($ownerModel->getPrimaryKey(), $parentId->value)
398+
->build()
399+
->onDatabase($this->onDatabase)
400+
->execute();
401401
}
402402

403403
private function deleteStandardHasOneRelation($hasOne, PrimaryKey $parentId): void
@@ -409,17 +409,11 @@ private function deleteStandardHasOneRelation($hasOne, PrimaryKey $parentId): vo
409409

410410
$foreignKeyColumn = Intl\singularize($ownerModel->getTableName()) . '_' . $ownerModel->getPrimaryKey();
411411

412-
$this->executeQuery(
413-
sql: 'DELETE FROM %s WHERE %s = ?',
414-
params: [$relatedModel->getTableName(), $foreignKeyColumn],
415-
bindings: [$parentId->value],
416-
);
417-
}
418-
419-
private function executeQuery(string $sql, array $params, array $bindings): mixed
420-
{
421-
$query = new Query(sprintf($sql, ...$params), $bindings);
422-
return $query->onDatabase($this->onDatabase)->execute();
412+
new DeleteQueryBuilder($relatedModel->getName())
413+
->where($foreignKeyColumn, $parentId->value)
414+
->build()
415+
->onDatabase($this->onDatabase)
416+
->execute();
423417
}
424418

425419
private function handleCustomHasOneRelation($hasOne, object|array $relation, PrimaryKey $parentId): null
@@ -435,11 +429,11 @@ private function handleCustomHasOneRelation($hasOne, object|array $relation, Pri
435429

436430
$foreignKeyColumn = $hasOne->relationJoin ?? $this->removeTablePrefix($hasOne->ownerJoin);
437431

438-
$this->executeQuery(
439-
sql: 'UPDATE %s SET %s = ? WHERE %s = ?',
440-
params: [$ownerModel->getTableName(), $foreignKeyColumn, $ownerModel->getPrimaryKey()],
441-
bindings: [$relatedModelId->value, $parentId->value],
442-
);
432+
new UpdateQueryBuilder($ownerModel->getName(), [$foreignKeyColumn => $relatedModelId->value], $this->serializerFactory)
433+
->where($ownerModel->getPrimaryKey(), $parentId->value)
434+
->build()
435+
->onDatabase($this->onDatabase)
436+
->execute();
443437

444438
return null;
445439
}

0 commit comments

Comments
 (0)