-
-
Notifications
You must be signed in to change notification settings - Fork 453
Expand file tree
/
Copy pathTransactionFailed.php
More file actions
46 lines (34 loc) · 1.34 KB
/
TransactionFailed.php
File metadata and controls
46 lines (34 loc) · 1.34 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
<?php
declare(strict_types=1);
namespace Kreait\Firebase\Exception\Database;
use Kreait\Firebase\Database\Reference;
use Kreait\Firebase\Exception\DatabaseException;
use Kreait\Firebase\Exception\RuntimeException;
use Throwable;
use function trim;
final class TransactionFailed extends RuntimeException implements DatabaseException
{
private readonly Reference $reference;
public function __construct(Reference $query, string $message = '', ?Throwable $previous = null)
{
if (trim($message) === '') {
$queryPath = $query->getPath();
$message = "The transaction on {$queryPath} failed";
if ($previous instanceof PreconditionFailed) {
$message = "The reference {$queryPath} has changed remotely since the transaction has been started.";
} elseif ($previous !== null) {
$message = "The transaction on {$query->getPath()} failed: {$previous->getMessage()}";
}
}
parent::__construct(message: $message, previous: $previous);
$this->reference = $query;
}
public static function onReference(Reference $reference, ?Throwable $error = null): self
{
return new self($reference, $error?->getMessage() ?? '', $error);
}
public function getReference(): Reference
{
return $this->reference;
}
}