"""Peewee SQLite database instance and initialization.""" from peewee import SqliteDatabase from imptune.config import DB_PATH # Deferred init — path is set at runtime via init_db() so tests can override DB_PATH db = SqliteDatabase(None) def init_db() -> None: """Initialize the SQLite database with WAL mode and foreign keys. Idempotent — safe to call on every application startup. Creates all ORM tables if they do not already exist. Closes any existing connection before re-initializing so that test fixtures can monkeypatch DB_PATH between test runs. """ from imptune.db.models import Client, Driver, Printer, Icon # Re-read DB_PATH each time so tests can patch imptune.config.DB_PATH import imptune.config as cfg # Close any lingering connection from a previous run (important for tests) if not db.is_closed(): db.close() db.init( cfg.DB_PATH, pragmas={ "journal_mode": "wal", "foreign_keys": 1, }, ) db.connect(reuse_if_open=True) db.create_tables([Client, Driver, Printer, Icon], safe=True)