from fastapi import APIRouter, Depends from sqlalchemy.orm import Session from app.common.db.session import get_db from app.common.responses.api_response import success_response from app.common.security.deps import require_admin_permission from app.modules.pricing.schema import PricingRulePayload from app.modules.pricing.service import PricingService router = APIRouter(prefix="/api/v1/admin/pricing-rules", tags=["admin-pricing"]) @router.get("") def list_pricing_rules( _=Depends(require_admin_permission()), db: Session = Depends(get_db), ): return success_response(PricingService(db).list_rules()) @router.post("") def create_pricing_rule( payload: PricingRulePayload, _=Depends(require_admin_permission()), db: Session = Depends(get_db), ): return success_response(PricingService(db).create_rule(payload)) @router.put("/{rule_id}") def update_pricing_rule( rule_id: int, payload: PricingRulePayload, _=Depends(require_admin_permission()), db: Session = Depends(get_db), ): return success_response(PricingService(db).update_rule(rule_id, payload)) @router.post("/{rule_id}/publish") def publish_pricing_rule( rule_id: int, _=Depends(require_admin_permission()), db: Session = Depends(get_db), ): return success_response(PricingService(db).publish_rule(rule_id))