""" 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))