from fastapi import APIRouter, HTTPException, Header, Depends, Body from typing import Dict, Any from ...core.database import db_manager from ...core.admin_auth import get_current_admin import logging router = APIRouter(prefix="/settings", tags=["settings"]) logger = logging.getLogger("api.settings") @router.get("/") async def get_settings(): """Get public site settings.""" try: rows = await db_manager.fetch_all("SELECT key, value FROM site_settings") # Default settings if none in DB settings_dict = { "title": "MOVIDO - موفيدو | مشاهدة وتحميل الأفلام والمسلسلات والأنمي 4K", "description": "موفيدو هي وجهتك الأولى لمشاهدة أحدث الأفلام والمسلسلات العربية والأجنبية، مسلسلات رمضان 2026، الأنمي، والكورسات التعليمية بجودة 4K وبدون إعلانات مزعجة.", "keywords": "موفيدو, MOVIDO, مشاهدة افلام, مسلسلات رمضان 2026, انمي مترجم, تحميل افلام, مشاهدة مسلسلات رمضان 2026, موقع موفيدو الاصلي, افلام 2026" } for row in rows: settings_dict[row['key']] = row['value'] return settings_dict except Exception as e: logger.error(f"Error fetching settings: {e}") return {} @router.post("/") async def update_settings(payload: Dict[str, str] = Body(...), current_admin: str = Depends(get_current_admin)): """Update site settings (Admin only).""" try: async with db_manager.get_connection() as db: for key, value in payload.items(): await db.execute( "INSERT INTO site_settings (key, value) VALUES (?, ?) ON CONFLICT(key) DO UPDATE SET value = excluded.value", (key, value) ) await db.commit() return {"status": "success"} except Exception as e: logger.error(f"Error updating settings: {e}") raise HTTPException(status_code=500, detail=str(e))