"""SQLite engine — єдиний спільний екземпляр для всього процесу."""
from __future__ import annotations

from functools import lru_cache
from pathlib import Path

from sqlalchemy import event
from sqlalchemy.engine import Engine
from sqlmodel import create_engine

DB_PATH = Path(__file__).resolve().parent.parent / "fmcg.db"


@lru_cache(maxsize=1)
def get_engine() -> Engine:
    engine = create_engine(f"sqlite:///{DB_PATH}")

    @event.listens_for(engine, "connect")
    def _set_wal(dbapi_conn, _connection_record):
        # WAL дозволяє паралельне читання під час запису (PDF + scoring одночасно)
        dbapi_conn.execute("PRAGMA journal_mode=WAL")

    return engine
