aiteamutils 0.2.108__py3-none-any.whl → 0.2.110__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
aiteamutils/validators.py CHANGED
@@ -7,6 +7,7 @@ from sqlalchemy.ext.asyncio import AsyncSession
7
7
  from fastapi import Request
8
8
  from inspect import signature
9
9
  from pydantic import BaseModel, field_validator
10
+ from datetime import datetime, date
10
11
  import re
11
12
 
12
13
  from .exceptions import ErrorCode, CustomException
@@ -187,4 +188,48 @@ class Validator:
187
188
  ErrorCode.VALIDATION_ERROR,
188
189
  detail=f"{field_name}|{name}",
189
190
  source_function="Validator.validate_name"
190
- )
191
+ )
192
+
193
+ @staticmethod
194
+ def validate_date(value: Any, field_name: str = "date") -> Optional[date]:
195
+ """날짜 형식 검증을 수행하는 메서드."""
196
+ if value is None:
197
+ return None
198
+ if isinstance(value, date):
199
+ return value
200
+ if value == "" or not value:
201
+ return None
202
+ try:
203
+ return datetime.strptime(str(value), '%Y-%m-%d').date()
204
+ except Exception as e:
205
+ raise CustomException(
206
+ error_code=ErrorCode.INVALID_DATE_FORMAT,
207
+ detail=f"{field_name}|{value}",
208
+ source_function="Validator.validate_date",
209
+ original_error=str(e)
210
+ )
211
+
212
+ def date_validator(*field_names: str):
213
+ """날짜 필드 유효성 검사 데코레이터
214
+ Args:
215
+ field_names: 검증할 필드명들
216
+ """
217
+ def decorator(cls):
218
+ for field_name in field_names:
219
+ @field_validator(field_name, mode='before')
220
+ @classmethod
221
+ def validate(cls, value: Any, info: Any) -> Any:
222
+ try:
223
+ return Validator.validate_date(value, field_name)
224
+ except CustomException as e:
225
+ raise e
226
+ except Exception as e:
227
+ raise CustomException(
228
+ error_code=ErrorCode.INVALID_DATE_FORMAT,
229
+ detail=f"{field_name}|{value}",
230
+ source_function=f"date_validator.{field_name}",
231
+ original_error=str(e)
232
+ )
233
+ setattr(cls, f'validate_{field_name}', validate)
234
+ return cls
235
+ return decorator
aiteamutils/version.py CHANGED
@@ -1,2 +1,2 @@
1
1
  """버전 정보"""
2
- __version__ = "0.2.108"
2
+ __version__ = "0.2.110"
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: aiteamutils
3
- Version: 0.2.108
3
+ Version: 0.2.110
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
@@ -8,8 +8,8 @@ aiteamutils/database.py,sha256=SmE6JiyQoqCNlrV4AVxrp1tsrNryyZSQWJM0dHN4MQA,19696
8
8
  aiteamutils/enums.py,sha256=7WLqlcJqQWtETAga2WAxNp3dJTQIAd2TW-4WzkoHHa8,2498
9
9
  aiteamutils/exceptions.py,sha256=pgf3ersezObyl17wAO3I2fb8m9t2OzWDX1mSjwAWm2Y,16035
10
10
  aiteamutils/security.py,sha256=McUl3t5Z5SyUDVUHymHdDkYyF4YSeg4g9fFMML4W6Kw,11630
11
- aiteamutils/validators.py,sha256=PvI9hbMEAqTawgxPbiWRyx2r9yTUrpNBQs1AD3w4F2U,7726
12
- aiteamutils/version.py,sha256=BZZQyFBHBTSj7bjpqSNRgS4KbT3XXRgejzD1n55QzOM,43
13
- aiteamutils-0.2.108.dist-info/METADATA,sha256=elkKSLjDWKEr8ojmkS2kwtj0MHCrgxa1ha6ihKNsN5w,1719
14
- aiteamutils-0.2.108.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
15
- aiteamutils-0.2.108.dist-info/RECORD,,
11
+ aiteamutils/validators.py,sha256=Ogx-YhE7qhTr5L6TKLMaGOdJn27LmYD1ejfeNrxyPaw,9428
12
+ aiteamutils/version.py,sha256=rZELRyPrgfKzPsiJKSaqLeakEakD0IuHD4p3sUh50RU,43
13
+ aiteamutils-0.2.110.dist-info/METADATA,sha256=QWI0U8OMtGlguZMpQmPuxPx7AUyqD4bx5uErl3IP5kw,1719
14
+ aiteamutils-0.2.110.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
15
+ aiteamutils-0.2.110.dist-info/RECORD,,