Newer
Older

G. Daryl M. OKOU
a validé
<?php

G. Daryl M. OKOU
a validé
require_once 'JoueurSquadro.php';

G. Daryl M. OKOU
a validé
class PDOSquadro
{
private static PDO $pdo;
public static function initPDO(string $sgbd, string $host, string $db, string $user, string $password): void
{
switch ($sgbd) {
case 'pgsql':
self::$pdo = new PDO("pgsql:host=$host;dbname=$db", $user, $password);

G. Daryl M. OKOU
a validé
break;
default:
exit("Type de SGBD non correct : $sgbd fourni, 'pgsql' attendu");

G. Daryl M. OKOU
a validé
}
// Activer les exceptions pour PDO

G. Daryl M. OKOU
a validé
self::$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
}
/* Requêtes préparées pour JoueurSquadro */

G. Daryl M. OKOU
a validé
private static PDOStatement $createPlayerSquadro;
private static PDOStatement $selectPlayerByName;
/******** Gestion des requêtes relatives à JoueurSquadro *************/

G. Daryl M. OKOU
a validé
public static function createPlayer(string $name): JoueurSquadro
{
if (!isset(self::$createPlayerSquadro)) {
self::$createPlayerSquadro = self::$pdo->prepare(
"INSERT INTO JoueurSquadro(joueurNom) VALUES (:name) RETURNING id"
);
}
self::$createPlayerSquadro->execute(['name' => $name]);
$id = self::$createPlayerSquadro->fetchColumn();

G. Daryl M. OKOU
a validé
return new JoueurSquadro($name, $id);

G. Daryl M. OKOU
a validé
}
public static function selectPlayerByName(string $name): ?JoueurSquadro
{
if (!isset(self::$selectPlayerByName)) {
self::$selectPlayerByName = self::$pdo->prepare(
"SELECT * FROM JoueurSquadro WHERE joueurNom = :name"
);
}
self::$selectPlayerByName->execute(['name' => $name]);
$row = self::$selectPlayerByName->fetch(PDO::FETCH_ASSOC);

G. Daryl M. OKOU
a validé
echo json_encode($row);
return $row ? new JoueurSquadro($row['joueurnom'], $row['id']) : null;

G. Daryl M. OKOU
a validé
}
/* Requêtes préparées pour PartieSquadro */

G. Daryl M. OKOU
a validé
private static PDOStatement $createPartieSquadro;
private static PDOStatement $savePartieSquadro;
private static PDOStatement $addPlayerToPartieSquadro;
private static PDOStatement $selectPartieSquadroById;
private static PDOStatement $selectAllPartieSquadro;
private static PDOStatement $selectAllPartieSquadroByPlayerName;
/******** Gestion des requêtes relatives à PartieSquadro *************/
public static function createPartieSquadro(string $playerName, string $json): void
{
if (!isset(self::$createPartieSquadro)) {
self::$createPartieSquadro = self::$pdo->prepare(
"INSERT INTO PartieSquadro(playerOne, json) VALUES (
(SELECT id FROM JoueurSquadro WHERE joueurNom = :playerName), :json)"
);
}
self::$createPartieSquadro->execute([
'playerName' => $playerName,
'json' => $json
]);

G. Daryl M. OKOU
a validé
}
public static function savePartieSquadro(string $gameStatus, string $json, int $partieId): void
{
if (!isset(self::$savePartieSquadro)) {
self::$savePartieSquadro = self::$pdo->prepare(
"UPDATE PartieSquadro SET gameStatus = :gameStatus, json = :json WHERE partieId = :partieId"
);
}
self::$savePartieSquadro->execute([
'gameStatus' => $gameStatus,
'json' => $json,
'partieId' => $partieId
]);

G. Daryl M. OKOU
a validé
}
public static function addPlayerToPartieSquadro(string $playerName, int $gameId): void

G. Daryl M. OKOU
a validé
{
if (!isset(self::$addPlayerToPartieSquadro)) {
self::$addPlayerToPartieSquadro = self::$pdo->prepare(
"UPDATE PartieSquadro SET playerTwo =
(SELECT id FROM JoueurSquadro WHERE joueurNom = :playerName)
WHERE partieId = :gameId"
);
}
self::$addPlayerToPartieSquadro->execute([
'playerName' => $playerName,
'gameId' => $gameId
]);

G. Daryl M. OKOU
a validé
}
public static function getPartieSquadroById(int $gameId): ?PartieSquadro
{
if (!isset(self::$selectPartieSquadroById)) {
self::$selectPartieSquadroById = self::$pdo->prepare(
"SELECT * FROM PartieSquadro WHERE partieId = :gameId"
);
}
self::$selectPartieSquadroById->execute(['gameId' => $gameId]);
$row = self::$selectPartieSquadroById->fetch(PDO::FETCH_ASSOC);

G. Daryl M. OKOU
a validé
return $row ? new PartieSquadro($row['partieId']) : null;

G. Daryl M. OKOU
a validé
}

G. Daryl M. OKOU
a validé
public static function getAllPartieSquadro(): array
{
if (!isset(self::$selectAllPartieSquadro)) {
self::$selectAllPartieSquadro = self::$pdo->prepare(
"SELECT * FROM PartieSquadro"
);
}
self::$selectAllPartieSquadro->execute();
return self::$selectAllPartieSquadro->fetchAll(PDO::FETCH_ASSOC);

G. Daryl M. OKOU
a validé
}
public static function getAllPartieSquadroByPlayerName(string $playerName): array
{
if (!isset(self::$selectAllPartieSquadroByPlayerName)) {
self::$selectAllPartieSquadroByPlayerName = self::$pdo->prepare(
"SELECT * FROM PartieSquadro WHERE playerOne =
(SELECT id FROM JoueurSquadro WHERE joueurNom = :playerName)
OR playerTwo =
(SELECT id FROM JoueurSquadro WHERE joueurNom = :playerName)
OR playerTwo IS NULL"
);
}
self::$selectAllPartieSquadroByPlayerName->execute(['playerName' => $playerName]);
return self::$selectAllPartieSquadroByPlayerName->fetchAll(PDO::FETCH_ASSOC);

G. Daryl M. OKOU
a validé
}

G. Daryl M. OKOU
a validé
public static function getLastGameIdForPlayer(string $playerName): int
{
$games = self::getAllPartieSquadroByPlayerName($playerName);
return empty($games) ? 0 : $games[count($games) - 1]['partieId'];