Files
geMoldInsight/src/inventory/api/inventory_routes.py
T

58 lines
2.1 KiB
Python
Raw Normal View History

2026-07-20 10:16:27 +08:00
"""库存管理路由层 - 薄路由
2026-05-11 14:46:20 +08:00
2026-07-20 10:16:27 +08:00
业务逻辑下沉至 inventory.services.inventory_service,路由只做参数校验与响应组装。
2026-05-11 14:46:20 +08:00
路由前缀: /api/inventory
"""
2026-07-20 10:16:27 +08:00
from fastapi import APIRouter, Depends, Query
2026-05-11 14:46:20 +08:00
from sqlalchemy.ext.asyncio import AsyncSession
2026-07-20 10:16:27 +08:00
from typing import Optional
2026-05-11 14:46:20 +08:00
2026-05-29 18:10:08 +08:00
from shared.database.database import get_db_session
from shared.services.auth_service import get_current_active_user
from shared.models.identity import User
2026-07-13 17:44:50 +08:00
from ..schemas import InventoryResponse, InventoryCreate, InventoryUpdate, PaginatedResponse
2026-07-20 10:16:27 +08:00
from ..services.inventory_service import inventory_service
2026-05-11 14:46:20 +08:00
router = APIRouter(prefix="/inventory", tags=["库存管理"])
@router.get("", response_model=PaginatedResponse[InventoryResponse])
async def list_inventory(
warehouse_id: Optional[int] = None,
product_id: Optional[int] = None,
low_stock: bool = False,
skip: int = Query(0, ge=0),
limit: int = Query(20, ge=1, le=100),
db_session: AsyncSession = Depends(get_db_session),
current_user: User = Depends(get_current_active_user)
):
2026-07-20 10:16:27 +08:00
return await inventory_service.list_inventory(db_session, warehouse_id, product_id, low_stock, skip, limit)
2026-05-11 14:46:20 +08:00
@router.post("", response_model=InventoryResponse, status_code=201)
async def create_inventory(
payload: InventoryCreate,
db_session: AsyncSession = Depends(get_db_session),
current_user: User = Depends(get_current_active_user)
):
2026-07-20 10:16:27 +08:00
return await inventory_service.create_inventory(db_session, payload, current_user)
2026-05-11 14:46:20 +08:00
@router.put("/{inventory_id}", response_model=InventoryResponse)
async def update_inventory(
inventory_id: int,
payload: InventoryUpdate,
db_session: AsyncSession = Depends(get_db_session),
current_user: User = Depends(get_current_active_user)
):
2026-07-20 10:16:27 +08:00
return await inventory_service.update_inventory(db_session, inventory_id, payload, current_user)
2026-05-11 14:46:20 +08:00
@router.delete("/{inventory_id}")
async def delete_inventory(
inventory_id: int,
db_session: AsyncSession = Depends(get_db_session),
current_user: User = Depends(get_current_active_user)
):
2026-07-20 10:16:27 +08:00
return await inventory_service.delete_inventory(db_session, inventory_id, current_user)