mirror of
https://codeberg.org/demostf/api.git
synced 2026-06-03 18:04:08 +02:00
use transaction
This commit is contained in:
parent
334dfb3771
commit
8f82097d93
2 changed files with 17 additions and 2 deletions
|
|
@ -109,7 +109,8 @@ class Container {
|
||||||
$this->getPlayerProvider(),
|
$this->getPlayerProvider(),
|
||||||
$this->getChatProvider(),
|
$this->getChatProvider(),
|
||||||
$this->getUserProvider(),
|
$this->getUserProvider(),
|
||||||
$this->getDemoProvider()
|
$this->getDemoProvider(),
|
||||||
|
$this->getConnection()
|
||||||
),
|
),
|
||||||
$this->getUploadKey()
|
$this->getUploadKey()
|
||||||
);
|
);
|
||||||
|
|
|
||||||
|
|
@ -14,6 +14,7 @@ use Demostf\API\Providers\DemoProvider;
|
||||||
use Demostf\API\Providers\KillProvider;
|
use Demostf\API\Providers\KillProvider;
|
||||||
use Demostf\API\Providers\PlayerProvider;
|
use Demostf\API\Providers\PlayerProvider;
|
||||||
use Demostf\API\Providers\UserProvider;
|
use Demostf\API\Providers\UserProvider;
|
||||||
|
use Doctrine\DBAL\Connection;
|
||||||
|
|
||||||
class DemoSaver {
|
class DemoSaver {
|
||||||
/** @var KillProvider */
|
/** @var KillProvider */
|
||||||
|
|
@ -26,19 +27,30 @@ class DemoSaver {
|
||||||
private $userProvider;
|
private $userProvider;
|
||||||
/** @var DemoProvider */
|
/** @var DemoProvider */
|
||||||
private $demoProvider;
|
private $demoProvider;
|
||||||
|
private $connection;
|
||||||
|
|
||||||
public function __construct(KillProvider $killProvider, PlayerProvider $playerProvider, ChatProvider $chatProvider, UserProvider $userProvider, DemoProvider $demoProvider) {
|
public function __construct(
|
||||||
|
KillProvider $killProvider,
|
||||||
|
PlayerProvider $playerProvider,
|
||||||
|
ChatProvider $chatProvider,
|
||||||
|
UserProvider $userProvider,
|
||||||
|
DemoProvider $demoProvider,
|
||||||
|
Connection $connection
|
||||||
|
) {
|
||||||
$this->killProvider = $killProvider;
|
$this->killProvider = $killProvider;
|
||||||
$this->playerProvider = $playerProvider;
|
$this->playerProvider = $playerProvider;
|
||||||
$this->chatProvider = $chatProvider;
|
$this->chatProvider = $chatProvider;
|
||||||
$this->userProvider = $userProvider;
|
$this->userProvider = $userProvider;
|
||||||
$this->demoProvider = $demoProvider;
|
$this->demoProvider = $demoProvider;
|
||||||
|
$this->connection = $connection;
|
||||||
}
|
}
|
||||||
|
|
||||||
public function saveDemo(ParsedDemo $demo, Header $header, StoredDemo $storedDemo, Upload $upload): int {
|
public function saveDemo(ParsedDemo $demo, Header $header, StoredDemo $storedDemo, Upload $upload): int {
|
||||||
/** @var int[] $userMap [$demoUserId => $dbUserId] */
|
/** @var int[] $userMap [$demoUserId => $dbUserId] */
|
||||||
$userMap = [0 => 0];
|
$userMap = [0 => 0];
|
||||||
|
|
||||||
|
$this->connection->beginTransaction();
|
||||||
|
|
||||||
$demoId = $this->demoProvider->storeDemo(new Demo(
|
$demoId = $this->demoProvider->storeDemo(new Demo(
|
||||||
0,
|
0,
|
||||||
$storedDemo->getUrl(),
|
$storedDemo->getUrl(),
|
||||||
|
|
@ -89,6 +101,8 @@ class DemoSaver {
|
||||||
$this->chatProvider->storeChatMessage($demoId, $chat);
|
$this->chatProvider->storeChatMessage($demoId, $chat);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
$this->connection->commit();
|
||||||
|
|
||||||
return $demoId;
|
return $demoId;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue