from fastapi import APIRouter from fastapi import Depends from fastapi import HTTPException from sqlalchemy.orm import Session import schemas from schemas import ItemResponse from services import crud from app.db.session import SessionLocal from core.logger import get_logger router = APIRouter() logger = get_logger('admin') def get_db(): db = SessionLocal() try: yield db finally: db.close() # GET ALL ITEMS @router.get("/items", response_model=list[ItemResponse]) def get_items(db: Session = Depends(get_db)): try: items = crud.get_items(db) logger.info(f"Items fetched: {len(items)} items") return items except Exception as e: logger.critical(f"Unexpected error fetching items: {e}") raise # CREATE ITEM @router.post("/items", response_model=ItemResponse) def create_item( item: schemas.ItemCreate, db: Session = Depends(get_db) ): try: result = crud.create_item(db, item.title, item.value) # ✅ value اضافه شد logger.info(f"Item created: {item.title}") return result except Exception as e: logger.critical(f"Unexpected error creating item: {e}") raise # DELETE ITEM @router.delete("/items/{item_id}") def delete_item( item_id: int, db: Session = Depends(get_db) ): try: item = crud.delete_item(db, item_id) if not item: logger.warning(f"Item not found: {item_id}") raise HTTPException(status_code=404, detail="Item not found") logger.info(f"Item deleted: {item_id}") return {"message": "Item deleted"} except HTTPException: raise except Exception as e: logger.critical(f"Unexpected error deleting item: {e}") raise @router.put("/items/{item_id}", response_model=ItemResponse) def update_item( item_id: int, item: schemas.ItemCreate, db: Session = Depends(get_db) ): try: updated = crud.update_item(db, item_id, item.title, item.value) if not updated: logger.warning(f"Item not found: {item_id}") raise HTTPException(status_code=404, detail="Item not found") logger.info(f"Item updated: {item_id}") return updated except HTTPException: raise except Exception as e: logger.critical(f"Unexpected error updating item: {e}") raise