Mark data classes and functions with types

This commit is contained in:
2025-12-17 03:41:40 +09:00
parent da1113341a
commit f8acc4b815
20 changed files with 496 additions and 343 deletions

View File

@@ -4,28 +4,34 @@ declare(strict_types=1);
namespace pvv\side;
use DateTimeImmutable;
use PDO;
class DBActivity implements Activity {
private $pdo;
public function __construct(\PDO $pdo) {
public function __construct(PDO $pdo) {
$this->pdo = $pdo;
}
public function getAllEvents() {
$query = 'SELECT * FROM events ORDER BY id DESC';
/**
* @return SimpleEvent[]
*/
public function getAllEvents(): array {
$query = "SELECT * FROM events ORDER BY id DESC";
$statement = $this->pdo->prepare($query);
$statement->execute();
$events = [];
foreach ($statement->fetchAll() as $dbEvent) {
$event = new SimpleEvent(
$dbEvent['id'],
$dbEvent['name'],
\DateTimeImmutable::createFromFormat('Y-m-d H:i:s', $dbEvent['start']),
\DateTimeImmutable::createFromFormat('Y-m-d H:i:s', $dbEvent['stop']),
$dbEvent['organiser'],
$dbEvent['location'],
$dbEvent['description']
$dbEvent["id"],
$dbEvent["name"],
\DateTimeImmutable::createFromFormat("Y-m-d H:i:s", $dbEvent["start"]),
\DateTimeImmutable::createFromFormat("Y-m-d H:i:s", $dbEvent["stop"]),
$dbEvent["organiser"],
$dbEvent["location"],
$dbEvent["description"],
);
$events[] = $event;
}
@@ -33,51 +39,57 @@ class DBActivity implements Activity {
return $events;
}
public function getEventByID($id) {
$query = 'SELECT * FROM events WHERE id=:id LIMIT 1';
public function getEventByID(int $id): SimpleEvent {
$query = "SELECT * FROM events WHERE id=:id LIMIT 1";
$statement = $this->pdo->prepare($query);
$statement->bindParam(':id', $id, \PDO::PARAM_INT);
$statement->bindParam(":id", $id, PDO::PARAM_INT);
$statement->execute();
$dbEvent = $statement->fetch();
return new SimpleEvent(
$dbEvent['id'],
$dbEvent['name'],
\DateTimeImmutable::createFromFormat('Y-m-d H:i:s', $dbEvent['start']),
\DateTimeImmutable::createFromFormat('Y-m-d H:i:s', $dbEvent['stop']),
$dbEvent['organiser'],
$dbEvent['location'],
$dbEvent['description']
$dbEvent["id"],
$dbEvent["name"],
\DateTimeImmutable::createFromFormat("Y-m-d H:i:s", $dbEvent["start"]),
\DateTimeImmutable::createFromFormat("Y-m-d H:i:s", $dbEvent["stop"]),
$dbEvent["organiser"],
$dbEvent["location"],
$dbEvent["description"],
);
}
public function getNextEventFrom(\DateTimeImmutable $date) {
$query = 'SELECT id,name,start,stop,organiser,location,description FROM events WHERE start > :date ORDER BY start ASC LIMIT 1';
public function getNextEventFrom(\DateTimeImmutable $date): ?Event {
$query =
"SELECT id,name,start,stop,organiser,location,description FROM events WHERE start > :date ORDER BY start ASC LIMIT 1";
return $this->retrieve($date, $query);
}
public function getPreviousEventFrom(\DateTimeImmutable $date) {
$query = 'SELECT id,name,start,stop,organiser,location,description FROM events WHERE start < :date ORDER BY start DESC LIMIT 1';
public function getPreviousEventFrom(\DateTimeImmutable $date): ?Event {
$query =
"SELECT id,name,start,stop,organiser,location,description FROM events WHERE start < :date ORDER BY start DESC LIMIT 1";
return $this->retrieve($date, $query);
}
private function retrieve($date, $query) {
private function retrieve(
DateTimeImmutable $date,
string $query,
): ?SimpleEvent {
$stmt = $this->pdo->prepare($query);
$stmt->execute(['date' => $date->format('Y-m-d H:i:s')]);
$stmt->execute(["date" => $date->format("Y-m-d H:i:s")]);
if ($result = $stmt->fetch(\PDO::FETCH_ASSOC)) {
return new SimpleEvent(
$result['id'],
$result['name'],
\DateTimeImmutable::createFromFormat('Y-m-d H:i:s', $result['start']),
\DateTimeImmutable::createFromFormat('Y-m-d H:i:s', $result['stop']),
$result['organiser'],
$result['location'],
$result['description']
$result["id"],
$result["name"],
DateTimeImmutable::createFromFormat("Y-m-d H:i:s", $result["start"]),
DateTimeImmutable::createFromFormat("Y-m-d H:i:s", $result["stop"]),
$result["organiser"],
$result["location"],
$result["description"],
);
} else {
return null;
}
}
}