from collections.abc import Iterator

import psycopg
from src.settings import Settings
from src.tracer import tracer

settings = Settings()


@tracer.capture_method
def get_connection() -> Iterator[psycopg.Connection]:
    # 処理終了時に接続を自動的にクローズする
    with psycopg.connect(conninfo=settings.postgres_url) as connection:
        # 全てのトランザクションを自動コミットする
        connection.autocommit = True
        yield connection
