34 lines
1.0 KiB
Python
34 lines
1.0 KiB
Python
"""Public tariff API routes for VoIdea."""
|
|
|
|
from fastapi import APIRouter, Depends
|
|
from sqlalchemy.ext.asyncio import AsyncSession
|
|
|
|
from app.core.dependencies import get_db
|
|
from app.schemas.tariff import TariffPlanResponse
|
|
from app.services.tariff_service import TariffService
|
|
|
|
router = APIRouter()
|
|
|
|
|
|
@router.get("", response_model=list[TariffPlanResponse])
|
|
async def list_tariffs(db: AsyncSession = Depends(get_db)):
|
|
"""Return all active tariff plans (public, no auth required)."""
|
|
service = TariffService(db)
|
|
plans = await service.list_plans(active_only=True)
|
|
return [
|
|
TariffPlanResponse(
|
|
id=str(p.id),
|
|
name=p.name,
|
|
code=p.code,
|
|
description=p.description,
|
|
price_monthly=p.price_monthly,
|
|
price_yearly=p.price_yearly,
|
|
features=p.features,
|
|
is_active=p.is_active,
|
|
sort_order=p.sort_order,
|
|
created_at=p.created_at,
|
|
updated_at=p.updated_at,
|
|
)
|
|
for p in plans
|
|
]
|