From 4d852748e8668e77f06be90775292c36feb5ce93 Mon Sep 17 00:00:00 2001
From: Jacek Kowalski <Jacek@jacekk.info>
Date: Sat, 09 Oct 2021 17:07:49 +0000
Subject: [PATCH] Update GTFS RT positions location (FTP server returnin auth errors)
---
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