from fastapi import APIRouter, Depends, HTTPException, status from sqlalchemy.orm import Session import json from ..config.database import get_db from ..config.logging_config import get_logger from ..models.page_content import PageContent, PageType logger = get_logger(__name__) router = APIRouter(prefix='/refunds', tags=['refunds']) def serialize_page_content(content: PageContent) -> dict: return { 'id': content.id, 'page_type': content.page_type.value, 'title': content.title, 'subtitle': content.subtitle, 'description': content.description, 'content': content.content, 'meta_title': content.meta_title, 'meta_description': content.meta_description, 'meta_keywords': content.meta_keywords, 'og_title': content.og_title, 'og_description': content.og_description, 'og_image': content.og_image, 'canonical_url': content.canonical_url, 'is_active': content.is_active, 'created_at': content.created_at.isoformat() if content.created_at else None, 'updated_at': content.updated_at.isoformat() if content.updated_at else None } @router.get('/') async def get_refunds_content(db: Session=Depends(get_db)): try: content = db.query(PageContent).filter(PageContent.page_type == PageType.REFUNDS).first() if not content: return {'status': 'success', 'data': {'page_content': None, 'is_active': False}} if not content.is_active: raise HTTPException(status_code=status.HTTP_404_NOT_FOUND, detail='Refunds policy page is currently disabled') content_dict = serialize_page_content(content) return {'status': 'success', 'data': {'page_content': content_dict}} except HTTPException: raise except Exception as e: logger.error(f'Error fetching refunds content: {str(e)}', exc_info=True) raise HTTPException(status_code=status.HTTP_500_INTERNAL_SERVER_ERROR, detail=f'Error fetching refunds content: {str(e)}')