43 lines
1.4 KiB
Python
43 lines
1.4 KiB
Python
from fastapi import APIRouter, Depends, HTTPException
|
|
from sqlalchemy import select
|
|
from sqlalchemy.ext.asyncio import AsyncSession
|
|
|
|
from app.database import get_db
|
|
from online_dev.page_manager.model import PageMeta
|
|
|
|
router = APIRouter(prefix="/page", tags=["page-render"])
|
|
|
|
|
|
def _format_datetime(dt) -> str:
|
|
return dt.strftime("%Y-%m-%d %H:%M:%S") if dt else ""
|
|
|
|
|
|
def _build_page_out(page: PageMeta) -> dict:
|
|
return {
|
|
"id": str(page.id),
|
|
"application_id": page.application_id,
|
|
"name": page.name,
|
|
"code": page.code,
|
|
"category": page.category or "",
|
|
"description": page.description or "",
|
|
"status": page.status,
|
|
"version": page.version,
|
|
"page_config": page.page_config or {},
|
|
"sort": page.sort or 0,
|
|
"sys_create_datetime": _format_datetime(page.sys_create_datetime),
|
|
"sys_update_datetime": _format_datetime(page.sys_update_datetime),
|
|
}
|
|
|
|
|
|
@router.get("/code/{code}", summary="Get page config by code")
|
|
async def get_page_by_code(code: str, db: AsyncSession = Depends(get_db)):
|
|
stmt = select(PageMeta).where(
|
|
PageMeta.code == code,
|
|
PageMeta.is_deleted == False, # noqa: E712
|
|
)
|
|
result = await db.execute(stmt)
|
|
page = result.scalar_one_or_none()
|
|
if not page:
|
|
raise HTTPException(status_code=404, detail="Page config not found")
|
|
return _build_page_out(page)
|