
- Create project structure with FastAPI and SQLAlchemy - Implement database models for items, categories, suppliers, and stock movements - Add CRUD operations for all models - Configure Alembic for database migrations - Create RESTful API endpoints for inventory management - Add health endpoint for system monitoring - Update README with setup and usage instructions generated with BackendIM... (backend.im)
39 lines
1.6 KiB
Python
39 lines
1.6 KiB
Python
from fastapi import APIRouter, Depends, HTTPException, status, Query
|
|
from sqlalchemy.orm import Session
|
|
from typing import List, Optional
|
|
from app.database import get_db
|
|
from app.schemas.supplier import SupplierCreate, SupplierUpdate, SupplierResponse
|
|
from app.crud import supplier as supplier_crud
|
|
|
|
router = APIRouter(
|
|
prefix="/suppliers",
|
|
tags=["Suppliers"]
|
|
)
|
|
|
|
@router.get("/", response_model=List[SupplierResponse])
|
|
def get_suppliers(
|
|
skip: int = 0,
|
|
limit: int = 100,
|
|
include_inactive: bool = False,
|
|
db: Session = Depends(get_db)
|
|
):
|
|
return supplier_crud.get_suppliers(db, skip=skip, limit=limit, include_inactive=include_inactive)
|
|
|
|
@router.get("/{supplier_id}", response_model=SupplierResponse)
|
|
def get_supplier(supplier_id: int, db: Session = Depends(get_db)):
|
|
db_supplier = supplier_crud.get_supplier(db, supplier_id=supplier_id)
|
|
if db_supplier is None:
|
|
raise HTTPException(status_code=status.HTTP_404_NOT_FOUND, detail="Supplier not found")
|
|
return db_supplier
|
|
|
|
@router.post("/", response_model=SupplierResponse, status_code=status.HTTP_201_CREATED)
|
|
def create_supplier(supplier: SupplierCreate, db: Session = Depends(get_db)):
|
|
return supplier_crud.create_supplier(db=db, supplier=supplier)
|
|
|
|
@router.put("/{supplier_id}", response_model=SupplierResponse)
|
|
def update_supplier(supplier_id: int, supplier: SupplierUpdate, db: Session = Depends(get_db)):
|
|
return supplier_crud.update_supplier(db=db, supplier_id=supplier_id, supplier=supplier)
|
|
|
|
@router.delete("/{supplier_id}")
|
|
def delete_supplier(supplier_id: int, db: Session = Depends(get_db)):
|
|
return supplier_crud.delete_supplier(db=db, supplier_id=supplier_id) |