Files
scotus-watch/lib/dbConfig.py
Christopher T. Johnson d46281fda7 Add a new dialog to get database settings. Fixes: #5
Added a new dialog for database settings.
Updated dbConfig to use QSettings.
2025-02-25 09:56:53 -05:00

65 lines
1.7 KiB
Python

from datetime import date
from PySide6.QtCore import QSettings
from pony.orm import ( # type: ignore[import-untyped]
Database,
LongStr,
Optional,
PrimaryKey,
Required,
Set,
set_sql_debug,
)
db = Database()
class Cases(db.Entity): # type: ignore[name-defined]
case_id = PrimaryKey(int, auto=True)
docket_id = Required(str)
petitioners = Required(str)
respondents = Optional(str)
date = Required(date)
active = Required(bool)
entries = Set("Entries")
lhs_id = Set("Cases", column="lhs")
rhs_id = Set("Cases", column="rhs")
class Entries(db.Entity): # type: ignore[name-defined]
entry_id = PrimaryKey(int, auto=True)
case_id = Required(Cases)
date = Required(date)
text = Required(LongStr)
documents = Set("Documents")
class Documents(db.Entity): # type: ignore[name-defined]
document_id = PrimaryKey(int, auto=True)
entry_id = Required(Entries)
name = Required(str)
url = Required(LongStr)
class History(db.Entity): # type: ignore[name-defined]
history_id = PrimaryKey(int, auto=True)
year = Required(str, max_len=3)
edocket = Required(bool)
number = Required(int)
def updateDatabase(settings: QSettings) -> None:
set_sql_debug(True)
engine = settings.value('engine')
if engine not in ['QMYSQL', 'MARIADB']:
raise Exception(f"Unknown database engine: {engine}")
db.bind(
provider="mysql",
user=settings.value('user'),
host=settings.value('hostname'),
database=settings.value('databasename'),
password=settings.value('password'),
)
db.generate_mapping(create_tables=True)
db.disconnect()
return