Spaces:
Build error
Build error
| import sqlite3 | |
| import os | |
| DB_PATH = "trailhead.db" | |
| def init_db(): | |
| """Initialize database and create tables if they do not exist.""" | |
| conn = sqlite3.connect(DB_PATH) | |
| cursor = conn.cursor() | |
| cursor.execute(""" | |
| CREATE TABLE IF NOT EXISTS journal_logs ( | |
| id INTEGER PRIMARY KEY AUTOINCREMENT, | |
| timestamp DATETIME DEFAULT CURRENT_TIMESTAMP, | |
| lat REAL, | |
| lon REAL, | |
| ele REAL, | |
| cum_dist REAL, | |
| transcript TEXT | |
| ); | |
| """) | |
| cursor.execute(""" | |
| CREATE TABLE IF NOT EXISTS custom_waypoints ( | |
| id INTEGER PRIMARY KEY AUTOINCREMENT, | |
| timestamp DATETIME DEFAULT CURRENT_TIMESTAMP, | |
| lat REAL, | |
| lon REAL, | |
| ele REAL, | |
| type TEXT, | |
| name TEXT, | |
| description TEXT | |
| ); | |
| """) | |
| conn.commit() | |
| conn.close() | |
| print(f"[database] SQLite database initialized at {DB_PATH}") | |
| def add_journal_entry(lat, lon, ele, cum_dist, transcript): | |
| """Insert a voice journal log entry.""" | |
| conn = sqlite3.connect(DB_PATH) | |
| cursor = conn.cursor() | |
| cursor.execute(""" | |
| INSERT INTO journal_logs (lat, lon, ele, cum_dist, transcript) | |
| VALUES (?, ?, ?, ?, ?) | |
| """, (lat, lon, ele, cum_dist, transcript)) | |
| conn.commit() | |
| conn.close() | |
| print(f"[database] Saved journal entry: '{transcript[:30]}...'") | |
| def get_journal_entries(): | |
| """Retrieve all journal entries sorted by timestamp descending.""" | |
| conn = sqlite3.connect(DB_PATH) | |
| conn.row_factory = sqlite3.Row | |
| cursor = conn.cursor() | |
| cursor.execute("SELECT id, timestamp, lat, lon, ele, cum_dist, transcript FROM journal_logs ORDER BY timestamp DESC") | |
| rows = cursor.fetchall() | |
| entries = [] | |
| for r in rows: | |
| entries.append({ | |
| "id": r["id"], | |
| "timestamp": r["timestamp"], | |
| "lat": r["lat"], | |
| "lon": r["lon"], | |
| "ele": r["ele"], | |
| "cum_dist": r["cum_dist"], | |
| "transcript": r["transcript"] | |
| }) | |
| conn.close() | |
| return entries | |
| def clear_journal_logs(): | |
| """Delete all journal entries.""" | |
| conn = sqlite3.connect(DB_PATH) | |
| cursor = conn.cursor() | |
| cursor.execute("DELETE FROM journal_logs") | |
| conn.commit() | |
| conn.close() | |
| print("[database] Cleared all journal logs.") | |
| def add_custom_waypoint(lat, lon, ele, wp_type, name, description=""): | |
| """Insert a tagged custom waypoint.""" | |
| conn = sqlite3.connect(DB_PATH) | |
| cursor = conn.cursor() | |
| cursor.execute(""" | |
| INSERT INTO custom_waypoints (lat, lon, ele, type, name, description) | |
| VALUES (?, ?, ?, ?, ?, ?) | |
| """, (lat, lon, ele, wp_type, name, description)) | |
| conn.commit() | |
| conn.close() | |
| print(f"[database] Saved custom waypoint '{name}' of type '{wp_type}'") | |
| def get_custom_waypoints(): | |
| """Retrieve all custom waypoints sorted by timestamp descending.""" | |
| conn = sqlite3.connect(DB_PATH) | |
| conn.row_factory = sqlite3.Row | |
| cursor = conn.cursor() | |
| cursor.execute("SELECT id, timestamp, lat, lon, ele, type, name, description FROM custom_waypoints ORDER BY timestamp DESC") | |
| rows = cursor.fetchall() | |
| wps = [] | |
| for r in rows: | |
| wps.append({ | |
| "id": r["id"], | |
| "timestamp": r["timestamp"], | |
| "lat": r["lat"], | |
| "lon": r["lon"], | |
| "ele": r["ele"], | |
| "type": r["type"], | |
| "name": r["name"], | |
| "description": r["description"] | |
| }) | |
| conn.close() | |
| return wps | |
| def clear_custom_waypoints(): | |
| """Delete all custom waypoints.""" | |
| conn = sqlite3.connect(DB_PATH) | |
| cursor = conn.cursor() | |
| cursor.execute("DELETE FROM custom_waypoints") | |
| conn.commit() | |
| conn.close() | |
| print("[database] Cleared all custom waypoints.") | |