Files
usda-vision/camera-management-api/usda_vision_system/api/routes/storage_routes.py
salirezav f1a9cb0c1e Refactor API route setup and enhance modularity
- Consolidated API route definitions by registering routes from separate modules for better organization and maintainability.
- Removed redundant route definitions from the APIServer class, improving code clarity.
- Updated camera monitoring and recording modules to utilize a shared context manager for suppressing camera SDK errors, enhancing error handling.
- Adjusted timeout settings in camera operations for improved reliability during frame capture.
- Enhanced logging and error handling across camera operations to facilitate better debugging and monitoring.
2025-11-01 15:53:01 -04:00

63 lines
2.2 KiB
Python

"""
Storage-related API routes.
"""
import logging
from datetime import datetime
from fastapi import FastAPI, HTTPException
from ...storage.manager import StorageManager
from ..models import StorageStatsResponse, FileListResponse, CleanupResponse, FileListRequest, CleanupRequest
def register_storage_routes(
app: FastAPI,
storage_manager: StorageManager,
logger: logging.Logger
):
"""Register storage-related routes"""
@app.get("/storage/stats", response_model=StorageStatsResponse)
async def get_storage_stats():
"""Get storage statistics"""
try:
stats = storage_manager.get_storage_statistics()
return StorageStatsResponse(**stats)
except Exception as e:
logger.error(f"Error getting storage stats: {e}")
raise HTTPException(status_code=500, detail=str(e))
@app.post("/storage/files", response_model=FileListResponse)
async def get_files(request: FileListRequest):
"""Get list of recording files"""
try:
start_date = None
end_date = None
if request.start_date:
start_date = datetime.fromisoformat(request.start_date)
if request.end_date:
end_date = datetime.fromisoformat(request.end_date)
files = storage_manager.get_recording_files(
camera_name=request.camera_name,
start_date=start_date,
end_date=end_date,
limit=request.limit
)
return FileListResponse(files=files, total_count=len(files))
except Exception as e:
logger.error(f"Error getting files: {e}")
raise HTTPException(status_code=500, detail=str(e))
@app.post("/storage/cleanup", response_model=CleanupResponse)
async def cleanup_storage(request: CleanupRequest):
"""Clean up old storage files"""
try:
result = storage_manager.cleanup_old_files(request.max_age_days)
return CleanupResponse(**result)
except Exception as e:
logger.error(f"Error during cleanup: {e}")
raise HTTPException(status_code=500, detail=str(e))