from typing import List from fastapi import APIRouter, HTTPException, Depends from sqlalchemy.orm import Session from app.infrastructure.database.dependencies import get_db from app.core.entities.storage import StorageEntity from app.core.usecases.storage_service import StorageService router = APIRouter() @router.get("/storages", response_model=List[StorageEntity]) def read_storages(db: Session = Depends(get_db)): service = StorageService(db) return service.get_all_storages() @router.get("/storages/{storage_id}", response_model=StorageEntity) def read_storage(storage_id: int, db: Session = Depends(get_db)): service = StorageService(db) storage = service.get_storage_by_id(storage_id) if storage is None: raise HTTPException(status_code=404, detail="Storage not found") return storage @router.post("/storages", response_model=StorageEntity) def create_storage(storage: StorageEntity, db: Session = Depends(get_db)): service = StorageService(db) return service.create_storage(storage) @router.put("/storages/{storage_id}", response_model=StorageEntity) def update_storage(storage_id: int, storage: StorageEntity, db: Session = Depends(get_db)): service = StorageService(db) updated_storage = service.update_storage(storage_id, storage) if updated_storage is None: raise HTTPException(status_code=404, detail="Storage not found") return updated_storage @router.delete("/storages/{storage_id}", response_model=bool) def delete_storage(storage_id: int, db: Session = Depends(get_db)): service = StorageService(db) success = service.delete_storage(storage_id) if not success: raise HTTPException(status_code=404, detail="Storage not found") return success