Step 3: Add admin API endpoints for pricing configuration
- Add PricingConfigResponse and PricingConfigUpdate schemas - Create PricingService with validation logic - Add GET and PUT endpoints in routes/pricing.py - Add MANAGE_PRICING permission to admin role - Register pricing router in main.py - Add comprehensive API tests for permissions and validation
This commit is contained in:
parent
74b934135a
commit
4d0dad8e2b
8 changed files with 534 additions and 0 deletions
33
backend/routes/pricing.py
Normal file
33
backend/routes/pricing.py
Normal file
|
|
@ -0,0 +1,33 @@
|
|||
"""Pricing routes for admin to manage pricing configuration."""
|
||||
|
||||
from fastapi import APIRouter, Depends
|
||||
from sqlalchemy.ext.asyncio import AsyncSession
|
||||
|
||||
from auth import require_permission
|
||||
from database import get_db
|
||||
from models import Permission, User
|
||||
from schemas import PricingConfigResponse, PricingConfigUpdate
|
||||
from services.pricing import PricingService
|
||||
|
||||
router = APIRouter(prefix="/api/admin/pricing", tags=["pricing"])
|
||||
|
||||
|
||||
@router.get("", response_model=PricingConfigResponse)
|
||||
async def get_pricing_config(
|
||||
db: AsyncSession = Depends(get_db),
|
||||
_current_user: User = Depends(require_permission(Permission.MANAGE_PRICING)),
|
||||
) -> PricingConfigResponse:
|
||||
"""Get current pricing configuration."""
|
||||
service = PricingService(db)
|
||||
return await service.get_config()
|
||||
|
||||
|
||||
@router.put("", response_model=PricingConfigResponse)
|
||||
async def update_pricing_config(
|
||||
request: PricingConfigUpdate,
|
||||
db: AsyncSession = Depends(get_db),
|
||||
_current_user: User = Depends(require_permission(Permission.MANAGE_PRICING)),
|
||||
) -> PricingConfigResponse:
|
||||
"""Update pricing configuration."""
|
||||
service = PricingService(db)
|
||||
return await service.update_config(request)
|
||||
Loading…
Add table
Add a link
Reference in a new issue