Finish DB cleanup/refactoring. Working now.

This commit is contained in:
Leo Vasanko
2025-08-05 08:26:35 -06:00
parent c5733eefd6
commit b58b7d5350
7 changed files with 47 additions and 49 deletions

View File

@@ -134,15 +134,26 @@ class DatabaseInterface(ABC):
"""Create a new user and their first credential in a transaction."""
# Global DB instance
database_instance: DatabaseInterface | None = None
class DatabaseManager:
"""Manager for the global database instance."""
def __init__(self):
self._instance: DatabaseInterface | None = None
@property
def instance(self) -> DatabaseInterface:
if self._instance is None:
raise RuntimeError(
"Database not initialized. Call e.g. db.sql.init() first."
)
return self._instance
@instance.setter
def instance(self, instance: DatabaseInterface) -> None:
self._instance = instance
def database() -> DatabaseInterface:
"""Get the global database instance."""
if database_instance is None:
raise RuntimeError("Database not initialized. Call e.g. db.sql.init() first.")
return database_instance
db = DatabaseManager()
__all__ = [
@@ -150,6 +161,5 @@ __all__ = [
"Credential",
"Session",
"DatabaseInterface",
"database_instance",
"database",
"db",
]

View File

@@ -23,15 +23,14 @@ from sqlalchemy.dialects.sqlite import BLOB, JSON
from sqlalchemy.ext.asyncio import async_sessionmaker, create_async_engine
from sqlalchemy.orm import DeclarativeBase, Mapped, mapped_column, relationship
from . import Credential, DatabaseInterface, Session, User
from . import Credential, DatabaseInterface, Session, User, db
DB_PATH = "sqlite+aiosqlite:///webauthn.db"
def init(*args, **kwargs):
from .. import db
db.database_instance = DB()
async def init(*args, **kwargs):
db.instance = DB()
await db.instance.init_db()
# SQLAlchemy Models