rrr4 / app /api /endpoints /settings.py
minaewrw's picture
Initial backend deployment for Hugging Face Spaces
11757af
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))