- 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
33 lines
1.1 KiB
Python
33 lines
1.1 KiB
Python
"""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)
|