diff --git a/app/core/database.py b/app/core/database.py index 0472e10..c75fe1e 100644 --- a/app/core/database.py +++ b/app/core/database.py @@ -1,4 +1,4 @@ -from collections.abc import AsyncGenerator +from collections.abc import AsyncGenerator, Callable from sqlalchemy.ext.asyncio import AsyncEngine, create_async_engine from sqlmodel import SQLModel @@ -38,9 +38,9 @@ async def get_db() -> AsyncGenerator[AsyncSession, None]: await session.close() -def get_session_factory(): +def get_session_factory() -> Callable[[], AsyncSession]: """Get a session factory function for services.""" - def session_factory(): + def session_factory() -> AsyncSession: return AsyncSession(engine) return session_factory diff --git a/app/core/dependencies.py b/app/core/dependencies.py index 292ded3..5a7e56e 100644 --- a/app/core/dependencies.py +++ b/app/core/dependencies.py @@ -135,8 +135,6 @@ async def get_current_user_api_token( detail="Account is deactivated", ) - return user - except HTTPException: # Re-raise HTTPExceptions without wrapping them raise @@ -146,6 +144,8 @@ async def get_current_user_api_token( status_code=status.HTTP_401_UNAUTHORIZED, detail="Could not validate API token", ) from e + else: + return user async def get_current_user_flexible( diff --git a/app/models/credit_transaction.py b/app/models/credit_transaction.py index e4dd2a8..dd9c92f 100644 --- a/app/models/credit_transaction.py +++ b/app/models/credit_transaction.py @@ -17,7 +17,8 @@ class CreditTransaction(BaseModel, table=True): user_id: int = Field(foreign_key="user.id", nullable=False) action_type: str = Field(nullable=False) - amount: int = Field(nullable=False) # Negative for deductions, positive for additions + # Negative for deductions, positive for additions + amount: int = Field(nullable=False) balance_before: int = Field(nullable=False) balance_after: int = Field(nullable=False) description: str = Field(nullable=False) diff --git a/app/models/extraction.py b/app/models/extraction.py index 3f71b22..200f7b0 100644 --- a/app/models/extraction.py +++ b/app/models/extraction.py @@ -25,7 +25,8 @@ class Extraction(BaseModel, table=True): status: str = Field(nullable=False, default="pending") error: str | None = Field(default=None) - # constraints - only enforce uniqueness when both service and service_id are not null + # constraints - only enforce uniqueness when both service and service_id + # are not null __table_args__ = () # relationships diff --git a/app/schemas/__init__.py b/app/schemas/__init__.py index bb35c3c..0c96d9d 100644 --- a/app/schemas/__init__.py +++ b/app/schemas/__init__.py @@ -28,25 +28,16 @@ from .playlist import ( ) __all__ = [ - # Auth schemas "ApiTokenRequest", "ApiTokenResponse", "ApiTokenStatusResponse", "AuthResponse", - "TokenResponse", - "UserLoginRequest", - "UserRegisterRequest", - "UserResponse", - # Common schemas "HealthResponse", "MessageResponse", - "StatusResponse", - # Player schemas "PlayerModeRequest", "PlayerSeekRequest", "PlayerStateResponse", "PlayerVolumeRequest", - # Playlist schemas "PlaylistAddSoundRequest", "PlaylistCreateRequest", "PlaylistReorderRequest", @@ -54,4 +45,9 @@ __all__ = [ "PlaylistSoundResponse", "PlaylistStatsResponse", "PlaylistUpdateRequest", + "StatusResponse", + "TokenResponse", + "UserLoginRequest", + "UserRegisterRequest", + "UserResponse", ] diff --git a/app/schemas/playlist.py b/app/schemas/playlist.py index 7fb1064..1911d7c 100644 --- a/app/schemas/playlist.py +++ b/app/schemas/playlist.py @@ -40,7 +40,8 @@ class PlaylistResponse(BaseModel): def from_playlist(cls, playlist: Playlist) -> "PlaylistResponse": """Create response from playlist model.""" if playlist.id is None: - raise ValueError("Playlist ID cannot be None") + msg = "Playlist ID cannot be None" + raise ValueError(msg) return cls( id=playlist.id, name=playlist.name, @@ -70,7 +71,8 @@ class PlaylistSoundResponse(BaseModel): def from_sound(cls, sound: Sound) -> "PlaylistSoundResponse": """Create response from sound model.""" if sound.id is None: - raise ValueError("Sound ID cannot be None") + msg = "Sound ID cannot be None" + raise ValueError(msg) return cls( id=sound.id, name=sound.name,