From 0620dbb2e81dd96c418c64bd3d13f9cd7700af86 Mon Sep 17 00:00:00 2001 From: Cody Fincher <204685+cofin@users.noreply.github.com> Date: Fri, 30 Aug 2024 14:17:47 -0500 Subject: [PATCH] feat: adds `get_connection` methods (#4) --- pyproject.toml | 2 +- src/litestar_oracledb/config/_asyncio.py | 13 +++++++++++++ src/litestar_oracledb/config/_sync.py | 17 +++++++++++++++-- 3 files changed, 29 insertions(+), 3 deletions(-) diff --git a/pyproject.toml b/pyproject.toml index 9173b6d..535573e 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -26,7 +26,7 @@ license = { text = "MIT" } name = "litestar-oracledb" readme = "README.md" requires-python = ">=3.8" -version = "0.1.2" +version = "0.1.3" [project.urls] Changelog = "https://litestar-org.github.io/litesatr-oracledb/latest/changelog" diff --git a/src/litestar_oracledb/config/_asyncio.py b/src/litestar_oracledb/config/_asyncio.py index 7d4eda3..0ca2b61 100644 --- a/src/litestar_oracledb/config/_asyncio.py +++ b/src/litestar_oracledb/config/_asyncio.py @@ -224,3 +224,16 @@ async def provide_connection( async with pool.acquire() as connection: set_scope_state(scope, self.connection_scope_key, connection) yield connection + + @asynccontextmanager + async def get_connection( + self, + ) -> AsyncGenerator[AsyncConnection, None]: + """Create a connection instance. + + Returns: + A connection instance. + """ + pool = await self.create_pool() + async with pool.acquire() as connection: + yield connection diff --git a/src/litestar_oracledb/config/_sync.py b/src/litestar_oracledb/config/_sync.py index 71cf4b3..24af361 100644 --- a/src/litestar_oracledb/config/_sync.py +++ b/src/litestar_oracledb/config/_sync.py @@ -1,6 +1,6 @@ from __future__ import annotations -from contextlib import asynccontextmanager +from contextlib import asynccontextmanager, contextmanager from dataclasses import dataclass from typing import TYPE_CHECKING, Generator, Optional, cast @@ -193,7 +193,7 @@ async def lifespan( try: yield finally: - db_pool.close(force=True) + db_pool.close() def provide_connection( self, @@ -219,3 +219,16 @@ def provide_connection( with pool.acquire() as connection: set_scope_state(scope, self.connection_scope_key, connection) yield connection + + @contextmanager + def get_connection( + self, + ) -> Generator[Connection, None, None]: + """Create a connection instance. + + Returns: + A connection instance. + """ + pool = self.create_pool() + with pool.acquire() as connection: + yield connection