ForcePilot/backend/package/yuxi/models/providers/repository.py
2026-05-29 22:19:58 +08:00

46 lines
1.5 KiB
Python

"""模型供应商配置数据访问层。"""
from sqlalchemy import select
from sqlalchemy.ext.asyncio import AsyncSession
from yuxi.storage.postgres.models_business import ModelProvider
async def list_model_providers(db: AsyncSession) -> list[ModelProvider]:
"""获取全部模型供应商配置。"""
result = await db.execute(
select(ModelProvider).order_by(ModelProvider.is_enabled.desc(), ModelProvider.provider_id.asc())
)
return list(result.scalars().all())
async def get_model_provider(db: AsyncSession, provider_id: str) -> ModelProvider | None:
"""按 provider_id 获取模型供应商配置。"""
result = await db.execute(select(ModelProvider).where(ModelProvider.provider_id == provider_id))
return result.scalar_one_or_none()
async def create_model_provider(db: AsyncSession, data: dict) -> ModelProvider:
"""创建模型供应商配置。"""
provider = ModelProvider(**data)
db.add(provider)
await db.flush()
await db.refresh(provider)
return provider
async def update_model_provider(db: AsyncSession, provider: ModelProvider, data: dict) -> ModelProvider:
"""更新模型供应商配置。"""
for key, value in data.items():
if key != "provider_id":
setattr(provider, key, value)
await db.flush()
await db.refresh(provider)
return provider
async def delete_model_provider(db: AsyncSession, provider: ModelProvider) -> None:
"""删除模型供应商配置。"""
await db.delete(provider)
await db.flush()