Files
arcaea-offline-pyside-ui/core/database/conn.py
2025-11-09 00:40:23 +08:00

32 lines
1008 B
Python

from pathlib import Path
from arcaea_offline.models import CalculatedPotential
from sqlalchemy import select
from sqlalchemy.orm import sessionmaker
from core.settings import SettingsKeys, settings
from .utils import create_engine, db_path_to_sqlite_url
class Database:
def __init__(self):
if settings.stringValue(SettingsKeys.General.DatabaseType) != "file":
raise ValueError("DatabaseType is not file")
db_path = settings.stringValue(SettingsKeys.General.DatabaseConn)
if not db_path:
raise ValueError("DatabaseConn is empty")
db_path = Path(db_path)
if not db_path.exists():
raise FileNotFoundError(f"{db_path} does not exist")
self.engine = create_engine(db_path_to_sqlite_url(db_path))
self.sessionmaker = sessionmaker(bind=self.engine)
@property
def b30(self) -> float | None:
with self.sessionmaker() as session:
return session.scalar(select(CalculatedPotential.b30))