aiteamutils 0.2.77__tar.gz → 0.2.79__tar.gz

Sign up to get free protection for your applications and to get access to all the features.
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: aiteamutils
3
- Version: 0.2.77
3
+ Version: 0.2.79
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
@@ -24,15 +24,18 @@ class BaseColumn(Base):
24
24
  nullable=False
25
25
  )
26
26
  created_at: Mapped[datetime] = mapped_column(
27
+ TIMESTAMP(timezone=True),
27
28
  default=datetime.now(timezone.utc),
28
29
  index=True
29
30
  )
30
31
  updated_at: Mapped[datetime] = mapped_column(
32
+ TIMESTAMP(timezone=True),
31
33
  default=datetime.now(timezone.utc),
32
34
  onupdate=datetime.now(timezone.utc),
33
35
  index=True
34
36
  )
35
37
  deleted_at: Mapped[datetime] = mapped_column(
38
+ TIMESTAMP(timezone=True),
36
39
  default=None,
37
40
  nullable=True
38
41
  )
@@ -508,7 +508,7 @@ async def get_entity(
508
508
  ##################
509
509
  async def log_create(
510
510
  session: AsyncSession,
511
- model: str,
511
+ model: Type[ModelType],
512
512
  log_data: Dict[str, Any],
513
513
  request: Optional[Request] = None
514
514
  ) -> None:
@@ -1,18 +1,17 @@
1
1
  """보안 관련 유틸리티."""
2
2
  from datetime import datetime, timedelta, timezone
3
- from typing import Dict, Any, Optional, Literal, Callable, TYPE_CHECKING
3
+ from typing import Dict, Any, Optional, Literal, Callable, TYPE_CHECKING, TypeVar
4
4
  from fastapi import Request, HTTPException, status
5
5
  from functools import wraps
6
6
  from jose import jwt, JWTError
7
7
  from passlib.context import CryptContext
8
8
  import logging
9
9
  from sqlalchemy.ext.asyncio import AsyncSession
10
-
11
10
  from .exceptions import CustomException, ErrorCode
12
11
  from .enums import ActivityType
13
- from .database import log_create
14
12
 
15
13
  pwd_context = CryptContext(schemes=["bcrypt"], deprecated="auto")
14
+ ModelType = TypeVar("ModelType")
16
15
 
17
16
  # 전역 rate limit 상태 저장
18
17
  _rate_limits: Dict[str, Dict[str, Any]] = {}
@@ -133,7 +132,7 @@ def rate_limit(
133
132
  return decorator
134
133
 
135
134
  async def create_jwt_token(
136
- user_data: Dict[str, Any],
135
+ user_data: Optional[ModelType],
137
136
  token_type: Literal["access", "refresh"],
138
137
  db_session: AsyncSession,
139
138
  token_settings: Dict[str, Any],
@@ -0,0 +1,2 @@
1
+ """버전 정보"""
2
+ __version__ = "0.2.79"
@@ -1,2 +0,0 @@
1
- """버전 정보"""
2
- __version__ = "0.2.77"
File without changes
File without changes
File without changes
File without changes