aiteamutils 0.2.19__tar.gz → 0.2.21__tar.gz
Sign up to get free protection for your applications and to get access to all the features.
- {aiteamutils-0.2.19 → aiteamutils-0.2.21}/PKG-INFO +1 -1
- {aiteamutils-0.2.19 → aiteamutils-0.2.21}/aiteamutils/database.py +12 -5
- {aiteamutils-0.2.19 → aiteamutils-0.2.21}/aiteamutils/dependencies.py +3 -1
- aiteamutils-0.2.21/aiteamutils/version.py +2 -0
- aiteamutils-0.2.19/aiteamutils/version.py +0 -2
- aiteamutils-0.2.19/app/auth/service.py +0 -4
- {aiteamutils-0.2.19 → aiteamutils-0.2.21}/.gitignore +0 -0
- {aiteamutils-0.2.19 → aiteamutils-0.2.21}/README.md +0 -0
- {aiteamutils-0.2.19 → aiteamutils-0.2.21}/aiteamutils/__init__.py +0 -0
- {aiteamutils-0.2.19 → aiteamutils-0.2.21}/aiteamutils/base_model.py +0 -0
- {aiteamutils-0.2.19 → aiteamutils-0.2.21}/aiteamutils/base_repository.py +0 -0
- {aiteamutils-0.2.19 → aiteamutils-0.2.21}/aiteamutils/base_service.py +0 -0
- {aiteamutils-0.2.19 → aiteamutils-0.2.21}/aiteamutils/cache.py +0 -0
- {aiteamutils-0.2.19 → aiteamutils-0.2.21}/aiteamutils/config.py +0 -0
- {aiteamutils-0.2.19 → aiteamutils-0.2.21}/aiteamutils/enums.py +0 -0
- {aiteamutils-0.2.19 → aiteamutils-0.2.21}/aiteamutils/exceptions.py +0 -0
- {aiteamutils-0.2.19 → aiteamutils-0.2.21}/aiteamutils/security.py +0 -0
- {aiteamutils-0.2.19 → aiteamutils-0.2.21}/aiteamutils/validators.py +0 -0
- {aiteamutils-0.2.19 → aiteamutils-0.2.21}/pyproject.toml +0 -0
- {aiteamutils-0.2.19 → aiteamutils-0.2.21}/setup.py +0 -0
@@ -85,7 +85,7 @@ class DatabaseService:
|
|
85
85
|
pool_pre_ping=True,
|
86
86
|
poolclass=QueuePool,
|
87
87
|
)
|
88
|
-
self.
|
88
|
+
self.session_factory = sessionmaker(
|
89
89
|
bind=self.engine,
|
90
90
|
class_=AsyncSession,
|
91
91
|
expire_on_commit=False
|
@@ -93,7 +93,11 @@ class DatabaseService:
|
|
93
93
|
self.db = None
|
94
94
|
elif session:
|
95
95
|
self.engine = session.bind
|
96
|
-
self.
|
96
|
+
self.session_factory = sessionmaker(
|
97
|
+
bind=self.engine,
|
98
|
+
class_=AsyncSession,
|
99
|
+
expire_on_commit=False
|
100
|
+
)
|
97
101
|
self.db = session
|
98
102
|
else:
|
99
103
|
raise ValueError("Either db_url or session must be provided")
|
@@ -101,10 +105,10 @@ class DatabaseService:
|
|
101
105
|
@asynccontextmanager
|
102
106
|
async def get_session(self) -> AsyncGenerator[AsyncSession, None]:
|
103
107
|
"""데이터베이스 세션을 생성하고 반환하는 비동기 컨텍스트 매니저."""
|
104
|
-
if self.
|
108
|
+
if self.session_factory is None:
|
105
109
|
raise RuntimeError("Session factory not initialized")
|
106
110
|
|
107
|
-
async with self.
|
111
|
+
async with self.session_factory() as session:
|
108
112
|
try:
|
109
113
|
yield session
|
110
114
|
finally:
|
@@ -788,7 +792,10 @@ class DatabaseService:
|
|
788
792
|
CustomException: 데이터베이스 작업 중 오류 발생 시
|
789
793
|
"""
|
790
794
|
try:
|
791
|
-
|
795
|
+
if self.db is not None:
|
796
|
+
return await self.db.execute(query)
|
797
|
+
|
798
|
+
async with self.get_session() as session:
|
792
799
|
result = await session.execute(query)
|
793
800
|
return result
|
794
801
|
except Exception as e:
|
@@ -2,6 +2,7 @@ from typing import Type, Dict, Tuple, Any, Callable
|
|
2
2
|
from fastapi import Depends, status
|
3
3
|
from fastapi.security import OAuth2PasswordBearer
|
4
4
|
from jose import JWTError, jwt
|
5
|
+
from sqlalchemy.ext.asyncio import AsyncSession
|
5
6
|
|
6
7
|
from .database import DatabaseService, get_database_service
|
7
8
|
from .exceptions import CustomException, ErrorCode
|
@@ -59,7 +60,8 @@ def get_service(name: str):
|
|
59
60
|
Returns:
|
60
61
|
Callable: 서비스 인스턴스를 반환하는 의존성 함수
|
61
62
|
"""
|
62
|
-
def _get_service(
|
63
|
+
def _get_service(db: AsyncSession = Depends(get_db)):
|
64
|
+
db_service = DatabaseService(session=db)
|
63
65
|
repository_class, service_class = service_registry.get(name)
|
64
66
|
repository = repository_class(db_service)
|
65
67
|
return service_class(repository, db_service)
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|