from fastapi import APIRouter, Depends, Query from app.core.config import settings from app.schemas.admin_cleanup import ( PricingCleanupExecuteRequest, PricingCleanupExecuteResponse, PricingCleanupPreviewResponse, ) from app.security.auth import require_api_key from app.services.pricing_cleanup import ( build_pricing_cleanup_preview, execute_pricing_cleanup, ) router = APIRouter() @router.get( f"{settings.api_v1_prefix}/admin/schemes/{{scheme_id}}/pricing/categories/cleanup-preview", response_model=PricingCleanupPreviewResponse, ) async def get_pricing_cleanup_preview( scheme_id: str, code_prefix: list[str] = Query(default_factory=list), name_prefix: list[str] = Query(default_factory=list), pricing_category_id: list[str] = Query(default_factory=list), delete_only_without_rules: bool = Query(default=True), role: str = Depends(require_api_key), ): return await build_pricing_cleanup_preview( scheme_id=scheme_id, code_prefixes=code_prefix, name_prefixes=name_prefix, pricing_category_ids=pricing_category_id, delete_only_without_rules=delete_only_without_rules, ) @router.post( f"{settings.api_v1_prefix}/admin/schemes/{{scheme_id}}/pricing/categories/cleanup", response_model=PricingCleanupExecuteResponse, ) async def post_pricing_cleanup( scheme_id: str, payload: PricingCleanupExecuteRequest, role: str = Depends(require_api_key), ): return await execute_pricing_cleanup( scheme_id=scheme_id, code_prefixes=payload.code_prefixes, name_prefixes=payload.name_prefixes, pricing_category_ids=payload.pricing_category_ids, delete_only_without_rules=payload.delete_only_without_rules, dry_run=payload.dry_run, )