1
0
Fork 0
mirror of https://codeberg.org/demostf/api.git synced 2026-06-03 18:04:08 +02:00

use transaction

This commit is contained in:
Robin Appelman 2019-03-05 23:39:18 +01:00
commit 8f82097d93
2 changed files with 17 additions and 2 deletions

View file

@ -109,7 +109,8 @@ class Container {
$this->getPlayerProvider(),
$this->getChatProvider(),
$this->getUserProvider(),
$this->getDemoProvider()
$this->getDemoProvider(),
$this->getConnection()
),
$this->getUploadKey()
);

View file

@ -14,6 +14,7 @@ use Demostf\API\Providers\DemoProvider;
use Demostf\API\Providers\KillProvider;
use Demostf\API\Providers\PlayerProvider;
use Demostf\API\Providers\UserProvider;
use Doctrine\DBAL\Connection;
class DemoSaver {
/** @var KillProvider */
@ -26,19 +27,30 @@ class DemoSaver {
private $userProvider;
/** @var 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->playerProvider = $playerProvider;
$this->chatProvider = $chatProvider;
$this->userProvider = $userProvider;
$this->demoProvider = $demoProvider;
$this->connection = $connection;
}
public function saveDemo(ParsedDemo $demo, Header $header, StoredDemo $storedDemo, Upload $upload): int {
/** @var int[] $userMap [$demoUserId => $dbUserId] */
$userMap = [0 => 0];
$this->connection->beginTransaction();
$demoId = $this->demoProvider->storeDemo(new Demo(
0,
$storedDemo->getUrl(),
@ -89,6 +101,8 @@ class DemoSaver {
$this->chatProvider->storeChatMessage($demoId, $chat);
}
$this->connection->commit();
return $demoId;
}
}