68 lines
2.2 KiB
Python
68 lines
2.2 KiB
Python
|
|
from typing import Dict, Any
|
||
|
|
from fastapi import APIRouter, Depends, Request
|
||
|
|
from sqlalchemy.orm import Session
|
||
|
|
|
||
|
|
from adapters.db.session import get_db
|
||
|
|
from app.core.auth_dependency import get_current_user, AuthContext
|
||
|
|
from app.core.permissions import require_business_access
|
||
|
|
from app.core.responses import success_response
|
||
|
|
from adapters.api.v1.schemas import QueryInfo
|
||
|
|
|
||
|
|
|
||
|
|
router = APIRouter(prefix="/invoices", tags=["invoices"]) # Stubs only
|
||
|
|
|
||
|
|
|
||
|
|
@router.post("/business/{business_id}")
|
||
|
|
@require_business_access("business_id")
|
||
|
|
def create_invoice_endpoint(
|
||
|
|
request: Request,
|
||
|
|
business_id: int,
|
||
|
|
payload: Dict[str, Any],
|
||
|
|
ctx: AuthContext = Depends(get_current_user),
|
||
|
|
db: Session = Depends(get_db),
|
||
|
|
) -> Dict[str, Any]:
|
||
|
|
# Stub only: no implementation yet
|
||
|
|
return success_response(data={}, request=request, message="INVOICE_CREATE_STUB")
|
||
|
|
|
||
|
|
|
||
|
|
@router.put("/business/{business_id}/{invoice_id}")
|
||
|
|
@require_business_access("business_id")
|
||
|
|
def update_invoice_endpoint(
|
||
|
|
request: Request,
|
||
|
|
business_id: int,
|
||
|
|
invoice_id: int,
|
||
|
|
payload: Dict[str, Any],
|
||
|
|
ctx: AuthContext = Depends(get_current_user),
|
||
|
|
db: Session = Depends(get_db),
|
||
|
|
) -> Dict[str, Any]:
|
||
|
|
# Stub only: no implementation yet
|
||
|
|
return success_response(data={}, request=request, message="INVOICE_UPDATE_STUB")
|
||
|
|
|
||
|
|
|
||
|
|
@router.get("/business/{business_id}/{invoice_id}")
|
||
|
|
@require_business_access("business_id")
|
||
|
|
def get_invoice_endpoint(
|
||
|
|
request: Request,
|
||
|
|
business_id: int,
|
||
|
|
invoice_id: int,
|
||
|
|
ctx: AuthContext = Depends(get_current_user),
|
||
|
|
db: Session = Depends(get_db),
|
||
|
|
) -> Dict[str, Any]:
|
||
|
|
# Stub only: no implementation yet
|
||
|
|
return success_response(data={"item": None}, request=request, message="INVOICE_GET_STUB")
|
||
|
|
|
||
|
|
|
||
|
|
@router.post("/business/{business_id}/search")
|
||
|
|
@require_business_access("business_id")
|
||
|
|
def search_invoices_endpoint(
|
||
|
|
request: Request,
|
||
|
|
business_id: int,
|
||
|
|
query_info: QueryInfo,
|
||
|
|
ctx: AuthContext = Depends(get_current_user),
|
||
|
|
db: Session = Depends(get_db),
|
||
|
|
) -> Dict[str, Any]:
|
||
|
|
# Stub only: no implementation yet
|
||
|
|
return success_response(data={"items": [], "total": 0, "take": query_info.take, "skip": query_info.skip}, request=request, message="INVOICE_SEARCH_STUB")
|
||
|
|
|
||
|
|
|