aiteamutils 0.2.55__py3-none-any.whl → 0.2.57__py3-none-any.whl

Sign up to get free protection for your applications and to get access to all the features.
aiteamutils/config.py CHANGED
@@ -1,6 +1,5 @@
1
1
  """설정 모듈."""
2
2
  from typing import Union
3
- from .database import DatabaseServiceManager
4
3
  from .exceptions import CustomException, ErrorCode
5
4
 
6
5
  class Settings:
@@ -11,13 +10,28 @@ class Settings:
11
10
  jwt_algorithm: str = "HS256",
12
11
  access_token_expire_minutes: int = 30,
13
12
  token_issuer: str = "ai-team",
14
- token_audience: str = "ai-team"
13
+ token_audience: str = "ai-team",
14
+ db_url: str = None,
15
+ db_echo: bool = False,
16
+ db_pool_size: int = 5,
17
+ db_max_overflow: int = 10,
18
+ db_pool_timeout: int = 30,
19
+ db_pool_recycle: int = 1800
15
20
  ):
21
+ # JWT 설정
16
22
  self.JWT_SECRET = jwt_secret
17
23
  self.JWT_ALGORITHM = jwt_algorithm
18
24
  self.ACCESS_TOKEN_EXPIRE_MINUTES = access_token_expire_minutes
19
25
  self.TOKEN_ISSUER = token_issuer
20
26
  self.TOKEN_AUDIENCE = token_audience
27
+
28
+ # 데이터베이스 설정
29
+ self.DB_URL = db_url
30
+ self.DB_ECHO = db_echo
31
+ self.DB_POOL_SIZE = db_pool_size
32
+ self.DB_MAX_OVERFLOW = db_max_overflow
33
+ self.DB_POOL_TIMEOUT = db_pool_timeout
34
+ self.DB_POOL_RECYCLE = db_pool_recycle
21
35
 
22
36
  _settings: Union[Settings, None] = None
23
37
 
@@ -55,18 +69,14 @@ async def init_settings(
55
69
  jwt_algorithm=jwt_algorithm,
56
70
  access_token_expire_minutes=access_token_expire_minutes,
57
71
  token_issuer=token_issuer,
58
- token_audience=token_audience
72
+ token_audience=token_audience,
73
+ db_url=db_url,
74
+ db_echo=db_echo,
75
+ db_pool_size=db_pool_size,
76
+ db_max_overflow=db_max_overflow,
77
+ db_pool_timeout=db_pool_timeout,
78
+ db_pool_recycle=db_pool_recycle
59
79
  )
60
-
61
- if db_url:
62
- await DatabaseServiceManager.get_instance(
63
- db_url=db_url,
64
- db_echo=db_echo,
65
- db_pool_size=db_pool_size,
66
- db_max_overflow=db_max_overflow,
67
- db_pool_timeout=db_pool_timeout,
68
- db_pool_recycle=db_pool_recycle
69
- )
70
80
 
71
81
  def get_settings() -> Settings:
72
82
  """현재 설정을 반환하는 함수
@@ -15,6 +15,16 @@ T = TypeVar("T", bound=BaseService)
15
15
  R = TypeVar("R", bound=BaseRepository)
16
16
 
17
17
  _service_registry: Dict[str, Dict[str, Any]] = {}
18
+ _session_provider = None
19
+
20
+ def setup_dependencies(session_provider: Callable[[], AsyncGenerator[AsyncSession, None]]) -> None:
21
+ """의존성 설정을 초기화합니다.
22
+
23
+ Args:
24
+ session_provider: 데이터베이스 세션을 제공하는 함수
25
+ """
26
+ global _session_provider
27
+ _session_provider = session_provider
18
28
 
19
29
  def register_service(
20
30
  service_class: Type[T],
@@ -28,6 +38,13 @@ def register_service(
28
38
  repository_class: 저장소 클래스 (선택)
29
39
  **kwargs: 추가 의존성
30
40
  """
41
+ if _session_provider is None:
42
+ raise CustomException(
43
+ ErrorCode.INTERNAL_ERROR,
44
+ detail="Dependencies not initialized",
45
+ source_function="dependencies.register_service"
46
+ )
47
+
31
48
  service_name = service_class.__name__
32
49
  _service_registry[service_name] = {
33
50
  "service_class": service_class,
@@ -103,9 +120,16 @@ def get_service(service_name: str) -> Callable:
103
120
  Returns:
104
121
  Callable: 서비스 의존성 함수
105
122
  """
123
+ if _session_provider is None:
124
+ raise CustomException(
125
+ ErrorCode.INTERNAL_ERROR,
126
+ detail="Dependencies not initialized",
127
+ source_function="dependencies.get_service"
128
+ )
129
+
106
130
  async def _get_service_dependency(
107
131
  request: Request,
108
- session: AsyncSession
132
+ session: AsyncSession = Depends(_session_provider)
109
133
  ) -> BaseService:
110
134
  return await _get_service(service_name, session, request)
111
135
  return _get_service_dependency
aiteamutils/version.py CHANGED
@@ -1,2 +1,2 @@
1
1
  """버전 정보"""
2
- __version__ = "0.2.55"
2
+ __version__ = "0.2.57"
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: aiteamutils
3
- Version: 0.2.55
3
+ Version: 0.2.57
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
@@ -3,14 +3,14 @@ aiteamutils/base_model.py,sha256=ODEnjvUVoxQ1RPCfq8-uZTfTADIA4c7Z3E6G4EVsSX0,270
3
3
  aiteamutils/base_repository.py,sha256=vqsundoN0h7FVvgqTBEnnJNMcFpvMK0s_nxBWdIYg-U,7846
4
4
  aiteamutils/base_service.py,sha256=s2AcA-6_ogOQKgt2xf_3AG2s6tqBceU4nJoXO1II7S8,24588
5
5
  aiteamutils/cache.py,sha256=07xBGlgAwOTAdY5mnMOQJ5EBxVwe8glVD7DkGEkxCtw,1373
6
- aiteamutils/config.py,sha256=OM_b7g8sqZ3zY_DSF9ry-zn5wn4dlXdx5OhjfTGr0TE,2876
6
+ aiteamutils/config.py,sha256=YdalpJb70-txhGJAS4aaKglEZAFVWgfzw5BXSWpkUz4,3232
7
7
  aiteamutils/database.py,sha256=x0x5gnSyGfwo_klL9O65RnGOQID6c9tH2miwFveVyoE,6326
8
- aiteamutils/dependencies.py,sha256=UrPjMfUlmG1uGGeWI0H7fINfxChL-LTfD-odFUA5xqQ,5965
8
+ aiteamutils/dependencies.py,sha256=vkSEiXYsgeTEh8mEVtI_sMBjCmcUhxLyqFflAR5MpPU,6792
9
9
  aiteamutils/enums.py,sha256=ipZi6k_QD5-3QV7Yzv7bnL0MjDz-vqfO9I5L77biMKs,632
10
10
  aiteamutils/exceptions.py,sha256=_lKWXq_ujNj41xN6LDE149PwsecAP7lgYWbOBbLOntg,15368
11
11
  aiteamutils/security.py,sha256=xFVrjttxwXB1TTjqgRQQgQJQohQBT28vuW8FVLjvi-M,10103
12
12
  aiteamutils/validators.py,sha256=3N245cZFjgwtW_KzjESkizx5BBUDaJLbbxfNO4WOFZ0,7764
13
- aiteamutils/version.py,sha256=q4mITsP_7Bmz6MAA1ME4HFQVgT80ojkzg8h-5uUxde4,42
14
- aiteamutils-0.2.55.dist-info/METADATA,sha256=UrrWJHMtqDp8HsWEk3hfzMkKcfm11VbgJv21yorOR1s,1718
15
- aiteamutils-0.2.55.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
16
- aiteamutils-0.2.55.dist-info/RECORD,,
13
+ aiteamutils/version.py,sha256=iEd2OwHHOAuMG_ICyOZTObkqFKxGQjbDcLvqr9IZKXk,42
14
+ aiteamutils-0.2.57.dist-info/METADATA,sha256=y8dfe__6SqRo2LLuki2isEhePbvNg_sGNJiIzMm3U2s,1718
15
+ aiteamutils-0.2.57.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
16
+ aiteamutils-0.2.57.dist-info/RECORD,,