from fastapi import APIRouter, Depends, HTTPException from sqlalchemy.orm import Session from datetime import datetime from typing import Dict, Any from backend.database import get_db from backend.services.snapshot import emit_status_snapshot router = APIRouter(prefix="/api", tags=["units"]) @router.get("/unit/{unit_id}") def get_unit_detail(unit_id: str, db: Session = Depends(get_db)): """ Returns detailed data for a single unit. """ snapshot = emit_status_snapshot() if unit_id not in snapshot["units"]: raise HTTPException(status_code=404, detail=f"Unit {unit_id} not found") unit_data = snapshot["units"][unit_id] # Mock coordinates for now (will be replaced with real data) mock_coords = { "BE1234": {"lat": 37.7749, "lon": -122.4194, "location": "San Francisco, CA"}, "BE5678": {"lat": 34.0522, "lon": -118.2437, "location": "Los Angeles, CA"}, "BE9012": {"lat": 40.7128, "lon": -74.0060, "location": "New York, NY"}, "BE3456": {"lat": 41.8781, "lon": -87.6298, "location": "Chicago, IL"}, "BE7890": {"lat": 29.7604, "lon": -95.3698, "location": "Houston, TX"}, } coords = mock_coords.get(unit_id, {"lat": 39.8283, "lon": -98.5795, "location": "Unknown"}) return { "id": unit_id, "status": unit_data["status"], "age": unit_data["age"], "last_seen": unit_data["last"], "last_file": unit_data.get("fname", ""), "deployed": unit_data["deployed"], "note": unit_data.get("note", ""), "coordinates": coords }