aiteamutils 0.2.23__py3-none-any.whl → 0.2.25__py3-none-any.whl

Sign up to get free protection for your applications and to get access to all the features.
@@ -52,19 +52,24 @@ class ServiceRegistry:
52
52
  service_registry = ServiceRegistry()
53
53
 
54
54
  def get_service(name: str):
55
- """등록된 서비스를 가져오는 의존성 함수
56
-
57
- Args:
58
- name (str): 서비스 이름
59
-
60
- Returns:
61
- Callable: 서비스 인스턴스를 반환하는 의존성 함수
62
- """
63
- def _get_service(db: AsyncSession = Depends(get_db)):
64
- db_service = DatabaseService(session=db)
55
+ def _get_service():
56
+ # 글로벌 DatabaseService 사용
57
+ db_service = get_database_service()
65
58
  repository_class, service_class = service_registry.get(name)
59
+
60
+ # 이미 생성된 서비스가 있다면 재사용
61
+ if hasattr(service_registry, '_instances') and name in service_registry._instances:
62
+ return service_registry._instances[name]
63
+
66
64
  repository = repository_class(db_service)
67
- return service_class(repository, db_service)
65
+ instance = service_class(repository, db_service)
66
+
67
+ # 생성된 인스턴스 캐싱
68
+ if not hasattr(service_registry, '_instances'):
69
+ service_registry._instances = {}
70
+ service_registry._instances[name] = instance
71
+
72
+ return instance
68
73
  return _get_service
69
74
 
70
75
  oauth2_scheme = OAuth2PasswordBearer(tokenUrl="/users/token")
aiteamutils/security.py CHANGED
@@ -1,6 +1,6 @@
1
1
  """보안 관련 유틸리티."""
2
2
  from datetime import datetime, timedelta, UTC
3
- from typing import Dict, Any, Optional, Literal, Callable
3
+ from typing import Dict, Any, Optional, Literal, Callable, Type, Base
4
4
  from fastapi import Request, HTTPException, status
5
5
  from functools import wraps
6
6
  from jose import jwt, JWTError
@@ -262,7 +262,7 @@ async def create_jwt_token(
262
262
  user_data: Dict[str, Any],
263
263
  token_type: Literal["access", "refresh"],
264
264
  db_service: DatabaseService,
265
- log_model: Any,
265
+ log_model: Type[Base],
266
266
  request: Optional[Request] = None
267
267
  ) -> str:
268
268
  """JWT 토큰을 생성하고 로그를 기록합니다.
@@ -271,7 +271,7 @@ async def create_jwt_token(
271
271
  user_data: 사용자 데이터 딕셔너리 (username, ulid, name, role_ulid, status, organization 정보 등)
272
272
  token_type: 토큰 타입 ("access" 또는 "refresh")
273
273
  db_service: 데이터베이스 서비스
274
- log_model: 로그 모델
274
+ log_model: 로그 모델 클래스
275
275
  request: FastAPI 요청 객체
276
276
 
277
277
  Returns:
@@ -293,7 +293,6 @@ async def create_jwt_token(
293
293
  token_type=token_type
294
294
  )
295
295
 
296
- # 토큰 데이터 생성
297
296
  if token_type == "access":
298
297
  expires_at = datetime.now(UTC) + timedelta(minutes=settings.ACCESS_TOKEN_EXPIRE_MINUTES)
299
298
  token_data = {
aiteamutils/version.py CHANGED
@@ -1,2 +1,2 @@
1
1
  """버전 정보"""
2
- __version__ = "0.2.23"
2
+ __version__ = "0.2.25"
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: aiteamutils
3
- Version: 0.2.23
3
+ Version: 0.2.25
4
4
  Summary: AI Team Utilities
5
5
  Project-URL: Homepage, https://github.com/yourusername/aiteamutils
6
6
  Project-URL: Issues, https://github.com/yourusername/aiteamutils/issues
@@ -5,12 +5,12 @@ aiteamutils/base_service.py,sha256=E4dHGE0DvhmRyFplh46SwKJOSF_nUL7OAsCkf_ZJF_8,2
5
5
  aiteamutils/cache.py,sha256=tr0Yn8VPYA9QHiKCUzciVlQ2J1RAwNo2K9lGMH4rY3s,1334
6
6
  aiteamutils/config.py,sha256=7pJHBml8RRXC9FpoRBx0emofFkvtxsyk9_Rcur2F9hI,2724
7
7
  aiteamutils/database.py,sha256=raYKRZjEfefM3SnoPYozPu7OUGm62XWOUqZzN4_cayw,33479
8
- aiteamutils/dependencies.py,sha256=e5P-DQi5OMMh7FADaAUqU0kLVBcReE7za55EDNZN950,4008
8
+ aiteamutils/dependencies.py,sha256=VIpy8InbmSd0yOtQYMnn-0rz8yVQwHHbB1xK9Gc7WOw,4275
9
9
  aiteamutils/enums.py,sha256=ipZi6k_QD5-3QV7Yzv7bnL0MjDz-vqfO9I5L77biMKs,632
10
10
  aiteamutils/exceptions.py,sha256=YV-ISya4wQlHk4twvGo16I5r8h22-tXpn9wa-b3WwDM,15231
11
- aiteamutils/security.py,sha256=4J9Q18RvlHH3zD8gW8ymFio7k5JuIJxvS2blU19AipA,13458
11
+ aiteamutils/security.py,sha256=t1xdvfy2qpggiQGr89AMuRKvWK1UFMxJiJYAE5Lek7o,13453
12
12
  aiteamutils/validators.py,sha256=3N245cZFjgwtW_KzjESkizx5BBUDaJLbbxfNO4WOFZ0,7764
13
- aiteamutils/version.py,sha256=FoxokvvxnU_rqoyqNTry6Th-i69tCu9uLXqkhxLbDwU,44
14
- aiteamutils-0.2.23.dist-info/METADATA,sha256=S-LkVpOYUZgX1BssQ9c144uavb-3FjiKsR4RJNYBIS0,1718
15
- aiteamutils-0.2.23.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
16
- aiteamutils-0.2.23.dist-info/RECORD,,
13
+ aiteamutils/version.py,sha256=twTFpzolvc7RqGZVG8NMtyztFRFxTGhSsOxiknGfolo,44
14
+ aiteamutils-0.2.25.dist-info/METADATA,sha256=1adRJ-4J_keHTi-Oga8lzoqbUAsqG-pymSUuhQmxmlc,1718
15
+ aiteamutils-0.2.25.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
16
+ aiteamutils-0.2.25.dist-info/RECORD,,