1
0
Fork 0
mirror of https://codeberg.org/demostf/api.git synced 2026-06-04 10:24:07 +02:00

store kills directly with players

This commit is contained in:
Robin Appelman 2021-05-24 14:34:43 +02:00
commit 6d01061c58
11 changed files with 83 additions and 84 deletions

View file

@ -33,11 +33,8 @@ class DemoProvider extends BaseProvider {
public function get(int $id, bool $fetchDetails = true): ?Demo {
// sql magic
$sql = 'WITH demokills AS (SELECT attacker_id, assister_id, victim_id FROM kills WHERE demo_id = ?)
SELECT players.id, user_id, players.name, team, class, users.steamid, users.avatar,
(SELECT COUNT(*) FROM demokills WHERE attacker_id=players.user_id) AS kills,
(SELECT COUNT(*) FROM demokills WHERE assister_id=players.user_id) AS assists,
(SELECT COUNT(*) FROM demokills WHERE victim_id=players.user_id) AS deaths
$sql = '
SELECT players.id, user_id, players.name, team, class, users.steamid, users.avatar, players.kills, players.assists, players.deaths
FROM players
INNER JOIN users ON players.user_id = users.id
WHERE demo_id = ?';
@ -49,7 +46,7 @@ class DemoProvider extends BaseProvider {
if ($fetchDetails) {
$uploader = $this->userProvider->getById($demo->getUploader());
$playerQuery = $this->connection->executeQuery($sql, [$demo->getId(), $demo->getId()]);
$playerQuery = $this->connection->executeQuery($sql, [$demo->getId()]);
$players = $playerQuery->fetchAll(PDO::FETCH_ASSOC);
$demo->setUploaderUser($uploader);

View file

@ -1,23 +0,0 @@
<?php
declare(strict_types=1);
namespace Demostf\API\Providers;
use Demostf\API\Data\Kill;
class KillProvider extends BaseProvider {
public function store(Kill $kill): int {
$query = $this->getQueryBuilder();
$query->insert('kills')
->values([
'demo_id' => $query->createNamedParameter($kill->getDemoId()),
'attacker_id' => $query->createNamedParameter($kill->getAttackerId()),
'assister_id' => $query->createNamedParameter($kill->getAssisterId()),
'victim_id' => $query->createNamedParameter($kill->getVictimId()),
]);
$query->execute();
return (int) $this->connection->lastInsertId();
}
}

View file

@ -17,6 +17,9 @@ class PlayerProvider extends BaseProvider {
'name' => $query->createNamedParameter($player->getName()),
'team' => $query->createNamedParameter($player->getTeam()),
'class' => $query->createNamedParameter($player->getClass()),
'kills' => $query->createNamedParameter($player->getKills()),
'assists' => $query->createNamedParameter($player->getAssists()),
'deaths' => $query->createNamedParameter($player->getDeaths()),
]);
$query->execute();