53 lines
1.7 KiB
Python
53 lines
1.7 KiB
Python
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
|