"""数据源管理路由。""" from fastapi import APIRouter, Depends, Query from sqlalchemy import select from sqlalchemy.ext.asyncio import AsyncSession from app.core.database import get_db from app.core.dependencies import get_current_user from app.models.data_source import DataSource from app.models.user import User from app.schemas.common import ApiResponse, success router = APIRouter(prefix="/data-sources", tags=["data-sources"]) @router.get("", response_model=ApiResponse[list]) async def list_data_sources( company_id: str | None = Query(default=None), db: AsyncSession = Depends(get_db), user: User = Depends(get_current_user), ): """获取数据源列表。""" query = select(DataSource).where(DataSource.tenant_id == user.tenant_id) if company_id: query = query.where(DataSource.company_id == company_id) result = await db.execute(query) items = result.scalars().all() return success(data=[ { "id": str(i.id), "company_id": str(i.company_id) if i.company_id else None, "source_type": i.source_type, "name": i.name, "status": i.status, "last_synced_at": i.last_synced_at.isoformat() if i.last_synced_at else None, } for i in items ]) @router.post("", response_model=ApiResponse[dict]) async def create_data_source(req: dict, db: AsyncSession = Depends(get_db), user: User = Depends(get_current_user)): """配置数据源。""" ds = DataSource( tenant_id=user.tenant_id, company_id=req.get("company_id"), source_type=req.get("source_type"), name=req.get("name"), api_endpoint=req.get("api_endpoint"), config=req.get("config"), ) db.add(ds) await db.flush() return success(data={"id": str(ds.id)}, message="创建成功")