Files
scotus-watch/lib/dbConfig.py
Christopher T. Johnson dfa604e846 Lint
2025-02-25 15:33:20 -05:00

66 lines
1.7 KiB
Python

from datetime import date
from pony.orm import ( # type: ignore[import-untyped]
Database,
LongStr,
Optional,
PrimaryKey,
Required,
Set,
set_sql_debug,
)
from PySide6.QtCore import QSettings
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