feat: add manual revision and dashboard list apis
This commit is contained in:
@@ -1,10 +1,16 @@
|
||||
"""Order routes."""
|
||||
|
||||
from fastapi import APIRouter, Depends, status
|
||||
from fastapi import APIRouter, Depends, Query, status
|
||||
from sqlalchemy.ext.asyncio import AsyncSession
|
||||
|
||||
from app.api.schemas.order import CreateOrderRequest, CreateOrderResponse, OrderDetailResponse
|
||||
from app.api.schemas.order import (
|
||||
CreateOrderRequest,
|
||||
CreateOrderResponse,
|
||||
OrderDetailResponse,
|
||||
OrderListResponse,
|
||||
)
|
||||
from app.application.services.order_service import OrderService
|
||||
from app.domain.enums import OrderStatus
|
||||
from app.infra.db.session import get_db_session
|
||||
|
||||
router = APIRouter(prefix="/orders", tags=["orders"])
|
||||
@@ -21,6 +27,27 @@ async def create_order(
|
||||
return await order_service.create_order(session, payload)
|
||||
|
||||
|
||||
@router.get("", response_model=OrderListResponse)
|
||||
async def list_orders(
|
||||
page: int = Query(default=1, ge=1),
|
||||
limit: int = Query(default=20, ge=1, le=100),
|
||||
query: str | None = Query(default=None, min_length=1),
|
||||
status_filter: OrderStatus | None = Query(default=None, alias="status"),
|
||||
order_id: int | None = Query(default=None, ge=1),
|
||||
session: AsyncSession = Depends(get_db_session),
|
||||
) -> OrderListResponse:
|
||||
"""Fetch recent orders for dashboard overview pages."""
|
||||
|
||||
return await order_service.list_orders(
|
||||
session,
|
||||
page=page,
|
||||
limit=limit,
|
||||
query=query,
|
||||
status_filter=status_filter,
|
||||
order_id=order_id,
|
||||
)
|
||||
|
||||
|
||||
@router.get("/{order_id}", response_model=OrderDetailResponse)
|
||||
async def get_order(
|
||||
order_id: int,
|
||||
@@ -29,4 +56,3 @@ async def get_order(
|
||||
"""Fetch order details."""
|
||||
|
||||
return await order_service.get_order(session, order_id)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user