from __future__ import annotations

from collections.abc import Iterator
from sqlite3 import Connection

from fastapi import HTTPException

from jarvis_finance.config.settings import find_repo_root, load_settings
from jarvis_finance.storage.database import connect


def get_db() -> Iterator[Connection]:
    settings = load_settings(repo_root=find_repo_root())
    if not settings.db_path.exists():
        raise HTTPException(status_code=503, detail="Runtime database not available")
    conn = connect(settings.db_path)
    try:
        yield conn
    finally:
        conn.close()
