#!/usr/bin/env python3 """ API för Reality DNA Exponerar vägar, observationer, events, missions """ import sys import json from datetime import datetime sys.path.insert(0, '/home/bernt/.openclaw/workspace/life-weather') from storage.observation_store import ObservationStore class RoadAPI: def __init__(self): self.store = ObservationStore() def get_roads(self): """Hämta alla vägar""" import sqlite3 conn = sqlite3.connect('/home/bernt/.openclaw/workspace/rivp-pilot-1/rivp.db') c = conn.cursor() c.execute('SELECT id, road_number, name, county, type FROM roads') roads = [ { "id": row[0], "road_number": row[1], "name": row[2], "county": row[3], "type": row[4] } for row in c.fetchall() ] conn.close() return roads def get_road(self, road_id): """Hämta specifik väg""" import sqlite3 conn = sqlite3.connect('/home/bernt/.openclaw/workspace/rivp-pilot-1/rivp.db') c = conn.cursor() c.execute('SELECT id, road_number, name, county, type FROM roads WHERE id = ?', (road_id,)) row = c.fetchone() conn.close() if row: return { "id": row[0], "road_number": row[1], "name": row[2], "county": row[3], "type": row[4] } return None def get_road_dna(self, road_id): """Hämta Reality DNA för väg""" import sqlite3 conn = sqlite3.connect('/home/bernt/.openclaw/workspace/rivp-pilot-1/rivp.db') c = conn.cursor() # Hämta senaste observationer c.execute(''' SELECT observation_type, value, unit, timestamp, source FROM weather_observations WHERE road_id = ? ORDER BY timestamp DESC LIMIT 5 ''', (road_id,)) observations = [ { "type": row[0], "value": row[1], "unit": row[2], "timestamp": row[3], "source": row[4] } for row in c.fetchall() ] conn.close() return { "road_id": road_id, "timestamp": datetime.now().isoformat(), "observations": observations, "observation_count": len(observations) } def get_road_observations(self, road_id): """Hämta alla observationer för väg""" import sqlite3 conn = sqlite3.connect('/home/bernt/.openclaw/workspace/rivp-pilot-1/rivp.db') c = conn.cursor() c.execute(''' SELECT observation_type, value, unit, timestamp, source FROM weather_observations WHERE road_id = ? ORDER BY timestamp DESC ''', (road_id,)) observations = [ { "type": row[0], "value": row[1], "unit": row[2], "timestamp": row[3], "source": row[4] } for row in c.fetchall() ] conn.close() return observations def get_road_events(self, road_id): """Hämta events för väg (placeholder)""" return [] # Implementeras när events sparas i DB def get_road_missions(self, road_id): """Hämta missions för väg (placeholder)""" return [] # Implementeras när missions sparas i DB if __name__ == "__main__": api = RoadAPI() # Testa roads = api.get_roads() print(f"Vägar: {len(roads)}") if roads: road = roads[0] print(f"\nVäg {road['id']}:") print(json.dumps(road, indent=2)) dna = api.get_road_dna(road['id']) print(f"\nDNA:") print(json.dumps(dna, indent=2))