from __future__ import annotations import sqlite3 from dataclasses import dataclass from backend.database.connection import Database @dataclass(frozen=True, slots=True) class DatabaseStatus: available: bool schema_version: int class DatabaseStatusRepository: def __init__(self, database: Database) -> None: self._database = database def get(self) -> DatabaseStatus: try: with self._database.read() as connection: connection.execute("SELECT 1").fetchone() row = connection.execute( "SELECT COALESCE(MAX(version), 0) AS version FROM schema_migrations" ).fetchone() return DatabaseStatus(available=True, schema_version=int(row["version"])) except (OSError, sqlite3.Error): return DatabaseStatus(available=False, schema_version=0)