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