From 4136546b927f78a475cb36b442c051ecaadb605e Mon Sep 17 00:00:00 2001 From: Jacek Kowalski <Jacek@jacekk.info> Date: Mon, 27 Jan 2020 23:39:17 +0000 Subject: [PATCH] Show when the vehicles were last seen in TTSS --- lib/Database.php | 42 ++++++++++++++++++++++++++++++------------ 1 files changed, 30 insertions(+), 12 deletions(-) diff --git a/lib/Database.php b/lib/Database.php index 22cc51c..e83f4ab 100644 --- a/lib/Database.php +++ b/lib/Database.php @@ -10,13 +10,23 @@ $this->pdo = new PDO('sqlite:'.$file); $this->pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); - $this->pdo->query('CREATE TABLE IF NOT EXISTS vehicles ( + $this->pdo->query('CREATE TABLE IF NOT EXISTS vehicles2 ( id INT PRIMARY KEY, num INT UNIQUE, - weight INT + weight INT, + line VARCHAR, + date INT )'); + try { + $this->beginTransaction(); + $this->pdo->query('INSERT INTO vehicles2 SELECT id, num, weight, \'?\', \''.time().'\' FROM vehicles'); + $this->commit(); + $this->pdo->query('DROP TABLE vehicles'); + } catch(PDOException $e) { + $this->rollback(); + } - $this->addStatement = $this->pdo->prepare('INSERT OR REPLACE INTO vehicles (id, num, weight) VALUES (:id, :num, :weight)'); + $this->addStatement = $this->pdo->prepare('INSERT OR REPLACE INTO vehicles2 (id, num, weight, line, date) VALUES (:id, :num, :weight, :line, :date)'); $this->_cacheClear(); } @@ -35,7 +45,7 @@ protected function _cachePopulate() { if($this->cacheId === NULL) { - $st = $this->pdo->prepare('SELECT * FROM vehicles'); + $st = $this->pdo->prepare('SELECT * FROM vehicles2'); $st->execute(); $result = $st->fetchAll(PDO::FETCH_ASSOC); @@ -58,9 +68,14 @@ $this->cacheNum = NULL; } - public function getAll() { + public function getAllById() { $this->_cachePopulate(); return $this->cacheId; + } + + public function getAllByNum() { + $this->_cachePopulate(); + return $this->cacheNum; } public function getById($id) { @@ -74,25 +89,28 @@ } public function clear() { - $this->pdo->query('DELETE FROM vehicles'); + $this->pdo->query('DELETE FROM vehicles2'); $this->_cacheClear(); } - public function add($id, $num, $weight) { + public function add($id, $num, $weight, $line = NULL, $date = NULL) { $vehicle = [ 'id' => (string)$id, 'num' => (string)$num, - 'weight' => (string)$weight + 'weight' => (string)$weight, + 'line' => (string)($line ?? ''), + 'date' => (string)($date ?? time()), ]; $this->addStatement->execute($vehicle); $this->_cacheAdd($vehicle); } - public function addMapping($mapping) { + public function addMapping($vehiclesMapping, Mapper $mapper) { $this->beginTransaction(); - $weight = count($mapping); - foreach($mapping as $id => $num) { - $this->add($id, $num, $weight); + $weight = count($vehiclesMapping); + foreach($vehiclesMapping as $id => $num) { + $trip = $mapper->getTTSSVehicleTrip($id); + $this->add($id, $num, $weight, ($trip['line'] ?? '?') . ' ' . ($trip['direction'] ?? '?')); } $this->commit(); } -- Gitblit v1.9.1