"""Skill 数据访问。""" from sqlalchemy import select from sqlalchemy.ext.asyncio import AsyncSession from app.models.skills import Skill async def add_skill(session: AsyncSession, skill: Skill) -> None: session.add(skill) await session.flush() async def get_skill(session: AsyncSession, skill_id: str) -> Skill | None: return await session.get(Skill, skill_id) async def get_skill_by_name(session: AsyncSession, name: str) -> Skill | None: result = await session.execute(select(Skill).where(Skill.name == name)) return result.scalar_one_or_none() async def list_skills(session: AsyncSession, *, status: str | None = None) -> list[Skill]: conditions = [] if status is not None: conditions.append(Skill.status == status) stmt = select(Skill) if conditions: stmt = stmt.where(*conditions) stmt = stmt.order_by(Skill.created_at.desc()) result = await session.execute(stmt) return list(result.scalars().all())