видалено колонку km з таблиці stations
This commit is contained in:
parent
527552186f
commit
73fa27209f
34
db.py
34
db.py
@ -19,8 +19,7 @@ def init_db():
|
|||||||
con.execute('''
|
con.execute('''
|
||||||
CREATE TABLE IF NOT EXISTS stations (
|
CREATE TABLE IF NOT EXISTS stations (
|
||||||
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
||||||
name TEXT UNIQUE NOT NULL,
|
name TEXT UNIQUE NOT NULL
|
||||||
km REAL
|
|
||||||
);
|
);
|
||||||
''')
|
''')
|
||||||
con.execute('''
|
con.execute('''
|
||||||
@ -38,6 +37,7 @@ def init_db():
|
|||||||
''')
|
''')
|
||||||
con.commit()
|
con.commit()
|
||||||
|
|
||||||
|
|
||||||
def save_schedule(entries: List[Dict]):
|
def save_schedule(entries: List[Dict]):
|
||||||
"""
|
"""
|
||||||
Зберігає повний розклад.
|
Зберігає повний розклад.
|
||||||
@ -80,13 +80,12 @@ def save_schedule(entries: List[Dict]):
|
|||||||
tid = train_ids[idx]
|
tid = train_ids[idx]
|
||||||
for t in e['times']:
|
for t in e['times']:
|
||||||
st = t['station']
|
st = t['station']
|
||||||
km = t.get('km')
|
# Додаємо лише станцію без колонки km
|
||||||
con.execute('''
|
con.execute('''
|
||||||
INSERT INTO stations (name, km)
|
INSERT INTO stations (name)
|
||||||
VALUES (?, ?)
|
VALUES (?)
|
||||||
ON CONFLICT(name) DO UPDATE SET
|
ON CONFLICT(name) DO NOTHING
|
||||||
km = COALESCE(excluded.km, stations.km)
|
''', (st,))
|
||||||
''', (st, km))
|
|
||||||
station_id = con.execute(
|
station_id = con.execute(
|
||||||
'SELECT id FROM stations WHERE name = ?',
|
'SELECT id FROM stations WHERE name = ?',
|
||||||
(st,)
|
(st,)
|
||||||
@ -100,12 +99,9 @@ def save_schedule(entries: List[Dict]):
|
|||||||
''', (tid, station_id, arr, dep, today))
|
''', (tid, station_id, arr, dep, today))
|
||||||
con.commit()
|
con.commit()
|
||||||
|
|
||||||
|
|
||||||
def get_schedule(route: Optional[str] = None, travel_date: Optional[str] = None) -> List[Dict]:
|
def get_schedule(route: Optional[str] = None, travel_date: Optional[str] = None) -> List[Dict]:
|
||||||
"""
|
"""Повертає розклад поїздів. Якщо вказано route, фільтрує за ним."""
|
||||||
Повертає розклад поїздів. Якщо вказано route, фільтрує за ним.
|
|
||||||
Повертає список:
|
|
||||||
[{'train_number': ..., 'route': ..., 'times': [...]}, ...]
|
|
||||||
"""
|
|
||||||
from datetime import date as _date
|
from datetime import date as _date
|
||||||
travel_date = travel_date or _date.today().isoformat()
|
travel_date = travel_date or _date.today().isoformat()
|
||||||
with sqlite3.connect(DB_PATH) as con:
|
with sqlite3.connect(DB_PATH) as con:
|
||||||
@ -127,15 +123,7 @@ def get_schedule(route: Optional[str] = None, travel_date: Optional[str] = None)
|
|||||||
WHERE sc.travel_date = ?
|
WHERE sc.travel_date = ?
|
||||||
ORDER BY tr.train_number, st.id
|
ORDER BY tr.train_number, st.id
|
||||||
''', (travel_date,)).fetchall()
|
''', (travel_date,)).fetchall()
|
||||||
|
|
||||||
schedule: Dict[tuple, List[Dict]] = {}
|
schedule: Dict[tuple, List[Dict]] = {}
|
||||||
for num, rt, station, arrival, departure in rows:
|
for num, rt, station, arrival, departure in rows:
|
||||||
schedule.setdefault((num, rt), []).append({
|
schedule.setdefault((num, rt), []).append({'station': station, 'arrival': arrival, 'departure': departure})
|
||||||
'station': station,
|
return [{'train_number': num, 'route': rt, 'times': times} for (num, rt), times in schedule.items()]
|
||||||
'arrival': arrival,
|
|
||||||
'departure': departure
|
|
||||||
})
|
|
||||||
return [
|
|
||||||
{'train_number': num, 'route': rt, 'times': times}
|
|
||||||
for (num, rt), times in schedule.items()
|
|
||||||
]
|
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user