Init project structure

This commit is contained in:
k1nq
2025-11-22 13:56:45 +05:00
parent ad0025be28
commit 74330b292f
25 changed files with 1343 additions and 1 deletions
+35
View File
@@ -0,0 +1,35 @@
"""Reusable FastAPI dependencies."""
from collections.abc import AsyncGenerator
from fastapi import Depends
from sqlalchemy.ext.asyncio import AsyncSession
from app.core.database import get_session
from app.core.security import jwt_service, password_hasher
from app.repositories.user_repo import UserRepository
from app.services.auth_service import AuthService
from app.services.user_service import UserService
async def get_db_session() -> AsyncGenerator[AsyncSession, None]:
"""Provide a scoped database session."""
async for session in get_session():
yield session
def get_user_repository(session: AsyncSession = Depends(get_db_session)) -> UserRepository:
return UserRepository(session=session)
def get_user_service(repo: UserRepository = Depends(get_user_repository)) -> UserService:
return UserService(user_repository=repo, password_hasher=password_hasher)
def get_auth_service(
repo: UserRepository = Depends(get_user_repository),
) -> AuthService:
return AuthService(
user_repository=repo,
password_hasher=password_hasher,
jwt_service=jwt_service,
)