Lightweight read-only DB access for skills.
SkillDatabase
SkillDatabase(connection: Connection)
Source code in src/donna/skills/database.py
| def __init__(self, connection: aiosqlite.Connection) -> None:
self._conn = connection
|
list_all
async
list_all(state: str | None = None, limit: int = 200) -> list[SkillRow]
Source code in src/donna/skills/database.py
| async def list_all(self, state: str | None = None, limit: int = 200) -> list[SkillRow]:
if state:
cursor = await self._conn.execute(
f"SELECT {SELECT_SKILL} FROM skill WHERE state = ? "
"ORDER BY updated_at DESC LIMIT ?",
(state, limit),
)
else:
cursor = await self._conn.execute(
f"SELECT {SELECT_SKILL} FROM skill ORDER BY updated_at DESC LIMIT ?",
(limit,),
)
rows = await cursor.fetchall()
return [row_to_skill(r) for r in rows]
|
get_by_id
async
get_by_id(skill_id: str) -> SkillRow | None
Source code in src/donna/skills/database.py
| async def get_by_id(self, skill_id: str) -> SkillRow | None:
cursor = await self._conn.execute(
f"SELECT {SELECT_SKILL} FROM skill WHERE id = ?",
(skill_id,),
)
row = await cursor.fetchone()
return row_to_skill(row) if row else None
|
get_by_capability
async
get_by_capability(capability_name: str) -> SkillRow | None
Source code in src/donna/skills/database.py
| async def get_by_capability(self, capability_name: str) -> SkillRow | None:
cursor = await self._conn.execute(
f"SELECT {SELECT_SKILL} FROM skill WHERE capability_name = ?",
(capability_name,),
)
row = await cursor.fetchone()
return row_to_skill(row) if row else None
|
get_version
async
get_version(version_id: str) -> SkillVersionRow | None
Source code in src/donna/skills/database.py
| async def get_version(self, version_id: str) -> SkillVersionRow | None:
cursor = await self._conn.execute(
f"SELECT {SELECT_SKILL_VERSION} FROM skill_version WHERE id = ?",
(version_id,),
)
row = await cursor.fetchone()
return row_to_skill_version(row) if row else None
|