arbret/backend/routes/pricing.py
counterweight 4d0dad8e2b
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
2025-12-26 20:13:24 +01:00

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)