rebuild(stage-2): establish runtime and persistence foundations

This commit is contained in:
leefer
2026-07-30 01:02:04 +08:00
parent b3ba840d4e
commit d969d2c092
26 changed files with 865 additions and 33 deletions
@@ -0,0 +1,3 @@
from backend.database.repositories.status import DatabaseStatus, DatabaseStatusRepository
__all__ = ["DatabaseStatus", "DatabaseStatusRepository"]
@@ -0,0 +1,28 @@
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)