mirror of
https://codeberg.org/demostf/api.git
synced 2026-06-03 09:54:17 +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->getChatProvider(),
|
||||
$this->getUserProvider(),
|
||||
$this->getDemoProvider()
|
||||
$this->getDemoProvider(),
|
||||
$this->getConnection()
|
||||
),
|
||||
$this->getUploadKey()
|
||||
);
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue