Add new function to get traffic
This commit is contained in:
@@ -90,8 +90,40 @@ class TrafficService:
|
||||
average_speed=record.average_speed,
|
||||
source=record.source
|
||||
) for record in db_records]
|
||||
|
||||
# If not in database, fetch from API and store
|
||||
logger.debug("Fetching historical data from MADRID OPEN DATA")
|
||||
traffic_data = await self.madrid_client.get_historical_traffic(
|
||||
latitude, longitude, start_date, end_date
|
||||
)
|
||||
|
||||
if traffic_data:
|
||||
# Store in database for future use
|
||||
try:
|
||||
for data in traffic_data:
|
||||
traffic_record = TrafficData(
|
||||
id = id,
|
||||
location_id = location_id,
|
||||
date = data.get('date', datetime.now()),
|
||||
traffic_volume = data.get('traffic_volume'),
|
||||
pedestrian_count = data.get('pedestrian_count'),
|
||||
congestion_level = data.get('congestion_level'),
|
||||
average_speed = data.get('average_speed'),
|
||||
source = "Madrid Open Data",
|
||||
raw_data = str(data),
|
||||
created_at = data.get('created_at'),
|
||||
)
|
||||
db.add(traffic_record)
|
||||
|
||||
await db.commit()
|
||||
logger.debug("Historical data stored in database", count=len(traffic_record))
|
||||
except Exception as db_error:
|
||||
logger.warning("Failed to store historical data in database", error=str(db_error))
|
||||
await db.rollback()
|
||||
|
||||
return [TrafficDataResponse(**item) for item in traffic_record]
|
||||
else:
|
||||
logger.debug("No historical traffic data found in database")
|
||||
logger.warning("No historical traffic data received")
|
||||
return []
|
||||
|
||||
except Exception as e:
|
||||
|
||||
Reference in New Issue
Block a user