Files
yaoyaoai/app/services/oem_public.py
fengchuanhn@gmail.com 5ee6a57dd1 11
2026-05-21 01:47:21 +08:00

32 lines
1.1 KiB
Python

from sqlalchemy.ext.asyncio import AsyncSession
from app.config import get_settings
from app.models.oem import Oem
from app.schemas.oem_public import OemPublicBrandingOut
def _logo_url(logo_path: str | None, base_url: str) -> str | None:
if not logo_path or not logo_path.strip():
return None
path = logo_path.strip().replace("\\", "/").lstrip("/")
if path.startswith("http://") or path.startswith("https://"):
return path
if not path.startswith("images/"):
path = f"images/{path.removeprefix('images/')}"
return f"{base_url.rstrip('/')}/{path}"
async def get_oem_public_branding(db: AsyncSession, oem_id: int) -> OemPublicBrandingOut:
settings = get_settings()
base_url = settings.api_public_base.rstrip("/")
oem = await db.get(Oem, oem_id)
if oem is None:
return OemPublicBrandingOut(oem_id=oem_id, software_name="", logo_url=None, wechat=None)
return OemPublicBrandingOut(
oem_id=oem.id,
software_name=oem.software_name or "",
logo_url=_logo_url(oem.logo_path, base_url),
wechat=oem.wechat,
)