# backend/app/plugins/i18n_multilang/router.py
import json
from fastapi import APIRouter, Depends, Request
from sqlalchemy import text
from sqlalchemy.ext.asyncio import AsyncSession

from app.api.deps import get_db, get_admin_user, get_tenant_by_domain
from app.core.models.user import User

router = APIRouter(tags=["i18n插件"])

_PLUGIN_NAME = "i18n_multilang"
_DEFAULT = {"enabled": True, "default_locale": "zh"}


async def _get_i18n_config(db: AsyncSession, tid: int) -> dict:
    """从 plugin_configs 表读取插件状态和配置，未找到记录则返回默认值。"""
    row = await db.execute(
        text(
            "SELECT is_active, config FROM plugin_configs "
            "WHERE tenant_id=:tid AND plugin_name=:name LIMIT 1"
        ),
        {"tid": tid, "name": _PLUGIN_NAME},
    )
    r = row.fetchone()
    if r is None:
        return _DEFAULT.copy()

    cfg = r[1] if isinstance(r[1], dict) else (json.loads(r[1]) if r[1] else {})
    return {
        "enabled":        bool(r[0]),
        "default_locale": cfg.get("default_locale", "zh"),
    }


@router.get("/admin/i18n-config", summary="获取多语言插件配置（Admin）")
async def admin_i18n_config(
    db: AsyncSession = Depends(get_db),
    tid: int = Depends(get_tenant_by_domain),
):
    """Admin 侧读取，无需鉴权（前端初始化时调用，尚无 token）"""
    return await _get_i18n_config(db, tid)


@router.get("/store/i18n-config", summary="获取多语言插件配置（Store）")
async def store_i18n_config(
    db: AsyncSession = Depends(get_db),
    tid: int = Depends(get_tenant_by_domain),
):
    return await _get_i18n_config(db, tid)
