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