Add direct field possibility

This commit is contained in:
Philipp
2023-05-13 22:04:51 +02:00
parent db5078d51c
commit 557d0e3aeb
5 changed files with 83 additions and 16 deletions
+11 -1
View File
@@ -1357,6 +1357,15 @@ class Database
}
$fields = $this->castFields($table, $fields);
$direct_fields = [];
foreach ($fields as $key => $value) {
if (is_numeric($key)) {
$direct_fields[] = $value;
unset($fields[$key]);
}
}
$table_string = DBA::buildTableString([$table]);
@@ -1369,7 +1378,8 @@ class Database
}
$sql = "UPDATE " . $ignore . $table_string . " SET "
. implode(" = ?, ", array_map([DBA::class, 'quoteIdentifier'], array_keys($fields))) . " = ?"
. ((count($fields) > 0) ? implode(" = ?, ", array_map([DBA::class, 'quoteIdentifier'], array_keys($fields))) . " = ?" : "")
. ((count($direct_fields) > 0) ? ((count($fields) > 0) ? " , " : "") . implode(" , ", $direct_fields) : "")
. $condition_string;
// Combines the updated fields parameter values with the condition parameter values
+11 -8
View File
@@ -38,22 +38,25 @@ class DatabaseException extends Exception
*
* @link https://php.net/manual/en/exception.construct.php
*
* @param string $message The Database error message.
* @param int $code The Database error code.
* @param string $query The Database error query.
* @param Throwable $previous [optional] The previous throwable used for the exception chaining.
* @param string $message The Database error message.
* @param int $code The Database error code.
* @param string $query The Database error query.
* @param Throwable|null $previous [optional] The previous throwable used for the exception chaining.
*/
public function __construct(string $message, int $code, string $query, Throwable $previous = null)
{
parent::__construct($message, $code, $previous);
$this->query = $query;
parent::__construct(sprintf('"%s" at "%s"', $message, $query) , $code, $previous);
}
/**
* {@inheritDoc}
* Returns the query, which caused the exception
*
* @return string
*/
public function __toString()
public function getQuery(): string
{
return sprintf('Database error %d "%s" at "%s"', $this->message, $this->code, $this->query);
return $this->query;
}
}
@@ -88,7 +88,8 @@ final class DeliveryQueueItem extends \Friendica\BaseRepository
public function remove(Entity\DeliveryQueueItem $deliveryQueueItem): bool
{
return $this->db->delete(self::$table_name, ['uri-id' => $deliveryQueueItem->postUriId, 'gsid' => $deliveryQueueItem->targetServerId]);
return $this->db->delete(self::$table_name, ['uri-id' => $deliveryQueueItem->postUriId,
'gsid' => $deliveryQueueItem->targetServerId]);
}
public function removeFailedByServerId(int $gsid, int $failedThreshold): bool
@@ -98,12 +99,11 @@ final class DeliveryQueueItem extends \Friendica\BaseRepository
public function incrementFailed(Entity\DeliveryQueueItem $deliveryQueueItem): bool
{
return $this->db->e("
UPDATE " . DBA::buildTableString([self::$table_name]) . "
SET `failed` = `failed` + 1
WHERE `uri-id` = ? AND `gsid` = ?",
$deliveryQueueItem->postUriId, $deliveryQueueItem->targetServerId
);
return $this->db->update(self::$table_name, ["`failed` = `failed` + 1"],
["`uri-id` = ? AND `gsid` = ?",
$deliveryQueueItem->postUriId,
$deliveryQueueItem->targetServerId
]);
}
public function optimizeStorage(): bool