Source code for app.services.runtime_version_service
"""runtime_version row management."""
from __future__ import annotations
from sqlalchemy import select
from sqlalchemy.ext.asyncio import AsyncSession
from app.core.config import Settings, get_settings, runtime_version_tuple
from app.db.models import RuntimeVersion
[docs]
async def ensure_runtime_version(
session: AsyncSession, settings: Settings | None = None
) -> RuntimeVersion:
s = settings or get_settings()
rv_id, seed = runtime_version_tuple(s)
stmt = select(RuntimeVersion).where(
RuntimeVersion.runtime_version_id == rv_id,
RuntimeVersion.seed == seed,
)
result = await session.execute(stmt)
row = result.scalar_one_or_none()
if row is not None:
return row
row = RuntimeVersion(runtime_version_id=rv_id, seed=seed)
session.add(row)
await session.flush()
return row