aiteamutils 0.2.79__py3-none-any.whl → 0.2.80__py3-none-any.whl

Sign up to get free protection for your applications and to get access to all the features.
@@ -79,13 +79,13 @@ class BaseRepository(Generic[ModelType]):
79
79
  async def delete(
80
80
  self,
81
81
  conditions: Dict[str, Any]
82
- ) -> None:
82
+ ) -> bool:
83
83
  await delete_entity(
84
84
  session=self.session,
85
85
  model=self.model,
86
86
  conditions=conditions
87
87
  )
88
-
88
+ return True
89
89
  #########################
90
90
  # 조회 및 검색 메서드 #
91
91
  #########################
@@ -93,7 +93,7 @@ class BaseRepository(Generic[ModelType]):
93
93
  self,
94
94
  skip: int = 0,
95
95
  limit: int = 100,
96
- filters: Optional[Dict[str, Any]] = None,
96
+ filters: Optional[List[Dict[str, Any]]] = None,
97
97
  explicit_joins: Optional[List[Any]] = None,
98
98
  loading_joins: Optional[List[Any]] = None
99
99
  ) -> List[ModelType]:
@@ -125,7 +125,7 @@ class BaseService(Generic[ModelType]):
125
125
  self,
126
126
  ulid: str | None = None,
127
127
  conditions: Dict[str, Any] | None = None
128
- ) -> None:
128
+ ) -> bool:
129
129
  try:
130
130
  if not ULID.from_str(ulid):
131
131
  raise CustomException(
@@ -168,29 +168,11 @@ class BaseService(Generic[ModelType]):
168
168
  skip: int = 0,
169
169
  limit: int = 100,
170
170
  filters: List[Dict[str, Any]] | None = None,
171
- model_name: str | None = None,
172
171
  response_model: Any = None,
173
172
  explicit_joins: Optional[List[Any]] = None,
174
173
  loading_joins: Optional[List[Any]] = None
175
174
  ) -> List[Dict[str, Any]]:
176
175
  try:
177
- # 모델 이름을 통한 동적 처리
178
- if model_name:
179
- if model_name not in self.additional_models:
180
- raise CustomException(
181
- ErrorCode.INVALID_REQUEST,
182
- detail=f"Model {model_name} not registered",
183
- source_function=f"{self.__class__.__name__}.list"
184
- )
185
- model = self.additional_models[model_name]
186
- entities = await self.repository.list(
187
- skip=skip,
188
- limit=limit,
189
- filters=filters,
190
- model=model
191
- )
192
- return [process_response(entity, response_model) for entity in entities]
193
-
194
176
  entities = await self.repository.list(
195
177
  skip=skip,
196
178
  limit=limit,
aiteamutils/database.py CHANGED
@@ -364,7 +364,7 @@ async def delete_entity(
364
364
  session: AsyncSession,
365
365
  model: Type[ModelType],
366
366
  conditions: Dict[str, Any]
367
- ) -> None:
367
+ ) -> bool:
368
368
  try:
369
369
  stmt = select(model)
370
370
  for key, value in conditions.items():
@@ -386,6 +386,7 @@ async def delete_entity(
386
386
  await session.flush()
387
387
  await session.refresh(entity)
388
388
 
389
+ return True
389
390
  except SQLAlchemyError as e:
390
391
  raise CustomException(
391
392
  ErrorCode.DB_DELETE_ERROR,
@@ -398,17 +399,18 @@ async def purge_entity(
398
399
  session: AsyncSession,
399
400
  model: Type[ModelType],
400
401
  entity: ModelType
401
- ) -> None:
402
+ ) -> bool:
402
403
  # 엔티티를 영구 삭제합니다.
403
404
  await session.delete(entity)
404
- await session.commit()
405
+
406
+ return True
405
407
 
406
408
  async def list_entities(
407
409
  session: AsyncSession,
408
410
  model: Type[ModelType],
409
411
  skip: int = 0,
410
412
  limit: int = 100,
411
- filters: Optional[Dict[str, Any]] = None,
413
+ filters: Optional[List[Dict[str, Any]]] = None,
412
414
  explicit_joins: Optional[List[Any]] = None,
413
415
  loading_joins: Optional[List[Any]] = None
414
416
  ) -> List[Dict[str, Any]]:
aiteamutils/exceptions.py CHANGED
@@ -74,6 +74,8 @@ class ErrorCode(Enum):
74
74
  SERVICE_NOT_REGISTERED = ErrorResponse(5003, "GENERAL_SERVICE_UNAVAILABLE", 503, "서비스를 사용할 수 없습니다")
75
75
  LOGIN_ERROR = ErrorResponse(5004, "LOGIN_ERROR", 401, "로그인 오류")
76
76
  TOKEN_ERROR = ErrorResponse(5005, "TOKEN_ERROR", 401, "토큰 오류")
77
+ DELETE_ERROR = ErrorResponse(5006, "DELETE_ERROR", 400, "삭제 오류")
78
+
77
79
 
78
80
  class CustomException(Exception):
79
81
  """사용자 정의 예외 클래스"""
aiteamutils/security.py CHANGED
@@ -162,10 +162,10 @@ async def create_jwt_token(
162
162
  "token_type": token_type,
163
163
 
164
164
  # 조직 관련 클레임
165
- "organization_ulid": user_data.role.organization.ulid,
166
- "organization_id": user_data.role.organization.id,
167
- "organization_name": user_data.role.organization.name,
168
- "company_name": user_data.role.organization.company.name
165
+ "organization_ulid": user_data.role.team.organization.ulid,
166
+ "organization_id": user_data.role.team.organization.id,
167
+ "organization_name": user_data.role.team.organization.name,
168
+ "company_name": user_data.role.team.organization.company.name
169
169
  }
170
170
  else: # refresh token
171
171
  expires_at = datetime.now(timezone.utc) + timedelta(days=14)
aiteamutils/version.py CHANGED
@@ -1,2 +1,2 @@
1
1
  """버전 정보"""
2
- __version__ = "0.2.79"
2
+ __version__ = "0.2.80"
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: aiteamutils
3
- Version: 0.2.79
3
+ Version: 0.2.80
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
@@ -0,0 +1,15 @@
1
+ aiteamutils/__init__.py,sha256=kRBpRjark0M8ZwFfmKiMFol6CbIILN3WE4f6_P6iIq0,1089
2
+ aiteamutils/base_model.py,sha256=bnRJJaGXGS3TKxfCWWV3arFjdG0qLsPFDXuguYsDyVM,3008
3
+ aiteamutils/base_repository.py,sha256=-5kPNsB82ILj_Z9Hdf2tVxSb7owars1KBgDubIRXA7I,4430
4
+ aiteamutils/base_service.py,sha256=6wCEbxPj9idhvMJbE3EK1uhXf5On97JVz2IFF-MILrw,8330
5
+ aiteamutils/cache.py,sha256=07xBGlgAwOTAdY5mnMOQJ5EBxVwe8glVD7DkGEkxCtw,1373
6
+ aiteamutils/config.py,sha256=YdalpJb70-txhGJAS4aaKglEZAFVWgfzw5BXSWpkUz4,3232
7
+ aiteamutils/database.py,sha256=HezCvPVVFV2qyZOkuyy92z1g3bKBgwAnksZQVHuwYyw,19220
8
+ aiteamutils/enums.py,sha256=ipZi6k_QD5-3QV7Yzv7bnL0MjDz-vqfO9I5L77biMKs,632
9
+ aiteamutils/exceptions.py,sha256=5yREcEUbJPzq2404pFJ4J9047I9_qx2QG5iBND1PjDI,15901
10
+ aiteamutils/security.py,sha256=JA7QGO07Jfmiwu3u429gIX6f8ESc3wQ4GeyOetLbHEo,9681
11
+ aiteamutils/validators.py,sha256=PvI9hbMEAqTawgxPbiWRyx2r9yTUrpNBQs1AD3w4F2U,7726
12
+ aiteamutils/version.py,sha256=x9TYUs6I03uAB9NABtV3lwAjzbxNdHWdUxFrj6Xcfgg,42
13
+ aiteamutils-0.2.80.dist-info/METADATA,sha256=ueFgVZRnNCHfe4Db8g0Is9NYOuAU44NUmlcRQa7aqz8,1718
14
+ aiteamutils-0.2.80.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
15
+ aiteamutils-0.2.80.dist-info/RECORD,,
@@ -1,15 +0,0 @@
1
- aiteamutils/__init__.py,sha256=kRBpRjark0M8ZwFfmKiMFol6CbIILN3WE4f6_P6iIq0,1089
2
- aiteamutils/base_model.py,sha256=bnRJJaGXGS3TKxfCWWV3arFjdG0qLsPFDXuguYsDyVM,3008
3
- aiteamutils/base_repository.py,sha256=VLCLLVkNnYLmZ6EMcr3Tu0RkMqDyMhtCO3M_2j6q-R8,4409
4
- aiteamutils/base_service.py,sha256=GmO_fqrSEbIs_Jc5BoRBTLfaJaS6CIxYPAs4B4TdtaU,9123
5
- aiteamutils/cache.py,sha256=07xBGlgAwOTAdY5mnMOQJ5EBxVwe8glVD7DkGEkxCtw,1373
6
- aiteamutils/config.py,sha256=YdalpJb70-txhGJAS4aaKglEZAFVWgfzw5BXSWpkUz4,3232
7
- aiteamutils/database.py,sha256=Q2rwVfhS8Rpnj89EwtcLtmsDpANkJ1AlprlqQsgIQAg,19204
8
- aiteamutils/enums.py,sha256=ipZi6k_QD5-3QV7Yzv7bnL0MjDz-vqfO9I5L77biMKs,632
9
- aiteamutils/exceptions.py,sha256=3FUCIqXgYmMqonnMgUlh-J2xtApiiCgg4WM-2UV4vmQ,15823
10
- aiteamutils/security.py,sha256=dPprEiKZ_VCg9bf27OaBvWw5SMBb_V0KGajIbgIbejs,9661
11
- aiteamutils/validators.py,sha256=PvI9hbMEAqTawgxPbiWRyx2r9yTUrpNBQs1AD3w4F2U,7726
12
- aiteamutils/version.py,sha256=CzBQOXpe_-RfEDV4RvVHykuSQFo8eYW1g0gu7UOhJ-E,42
13
- aiteamutils-0.2.79.dist-info/METADATA,sha256=pQkGcF9V5M-cOJKyAYJsCYyYe5DnCDQhmqh36G30vb4,1718
14
- aiteamutils-0.2.79.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
15
- aiteamutils-0.2.79.dist-info/RECORD,,