""" SNS 모듈 전용 FastAPI 의존성 SNS 모듈에서만 사용하는 의존성을 정의합니다. Facebook OAuth 관련 의존성을 포함합니다. """ from fastapi import Depends, HTTPException, status from sqlalchemy import select from sqlalchemy.ext.asyncio import AsyncSession from app.database.session import get_session from app.user.dependencies.auth import get_current_user from app.user.models import Platform, SocialAccount, User from app.utils.facebook_oauth import FacebookOAuthClient from app.utils.logger import get_logger logger = get_logger(__name__) def get_facebook_oauth_client() -> FacebookOAuthClient: """ FacebookOAuthClient 인스턴스를 제공하는 의존성 Returns: FacebookOAuthClient: Facebook OAuth API 클라이언트 인스턴스 """ return FacebookOAuthClient() async def get_facebook_social_account( current_user: User = Depends(get_current_user), session: AsyncSession = Depends(get_session), ) -> SocialAccount: """ 현재 사용자의 활성 Facebook 소셜 계정을 조회하는 의존성 Args: current_user: 현재 인증된 사용자 session: DB 세션 Returns: SocialAccount: 활성 Facebook 소셜 계정 Raises: HTTPException: Facebook 소셜 계정이 없는 경우 404 반환 """ logger.debug(f"[SNS_DEP] Facebook 소셜 계정 조회 - user_uuid: {current_user.user_uuid}") # SocialAccount에서 Facebook 활성 계정 조회 result = await session.execute( select(SocialAccount).where( SocialAccount.user_uuid == current_user.user_uuid, SocialAccount.platform == Platform.FACEBOOK, SocialAccount.is_active == True, # noqa: E712 SocialAccount.is_deleted == False, # noqa: E712 ) ) social_account = result.scalar_one_or_none() if social_account is None: logger.warning(f"[SNS_DEP] Facebook 계정 없음 - user_uuid: {current_user.user_uuid}") raise HTTPException( status_code=status.HTTP_404_NOT_FOUND, detail={ "code": "FACEBOOK_ACCOUNT_NOT_FOUND", "message": "연동된 Facebook 계정을 찾을 수 없습니다.", }, ) logger.debug(f"[SNS_DEP] Facebook 소셜 계정 확인 - account_id: {social_account.id}") return social_account