| 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") |
| |
| 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)) |
|
|