from flask_sqlalchemy import SQLAlchemy
from flask_migrate import Migrate
from sqlalchemy import event
from sqlalchemy.engine import Engine


db = SQLAlchemy()
migrate = Migrate()


@event.listens_for(Engine, "connect")
def set_sqlite_wal_mode(dbapi_conn, connection_record):
    """
    Enable WAL mode on every SQLite connection.

    Architecture constraint: WAL mode is required for this app (see architecture.md).
    Uses a class-level Engine event (not db.engine) so it fires before the app
    context is active — safe to register at module import time.
    Connection-per-request pattern: fires on every new connection.
    """
    dbapi_conn.execute("PRAGMA journal_mode=WAL")
