"""MCP server 数据访问。""" from sqlalchemy import select from sqlalchemy.ext.asyncio import AsyncSession from app.models.mcp_servers import McpServer async def add_server(session: AsyncSession, server: McpServer) -> None: session.add(server) await session.flush() async def get_server(session: AsyncSession, server_id: str) -> McpServer | None: return await session.get(McpServer, server_id) async def get_server_by_name(session: AsyncSession, name: str) -> McpServer | None: result = await session.execute(select(McpServer).where(McpServer.name == name)) return result.scalar_one_or_none() async def list_servers(session: AsyncSession, *, status: str | None = None) -> list[McpServer]: conditions = [] if status is not None: conditions.append(McpServer.status == status) stmt = select(McpServer) if conditions: stmt = stmt.where(*conditions) stmt = stmt.order_by(McpServer.created_at.desc()) result = await session.execute(stmt) return list(result.scalars().all())