77 lines
2.2 KiB
Python
77 lines
2.2 KiB
Python
from dataclasses import dataclass
|
|
from typing import Optional
|
|
from fastapi import Depends
|
|
from sqlalchemy.ext.asyncio import AsyncSession
|
|
|
|
from database import get_session, User
|
|
from core.dependencies import get_current_user
|
|
from sage.sage_client import SageGatewayClient
|
|
from config.config import settings
|
|
import logging
|
|
|
|
logger = logging.getLogger(__name__)
|
|
|
|
|
|
@dataclass
|
|
class GatewayContext:
|
|
|
|
url: str
|
|
token: str
|
|
gateway_id: Optional[str] = None
|
|
gateway_name: Optional[str] = None
|
|
user_id: Optional[str] = None
|
|
is_fallback: bool = False
|
|
|
|
|
|
async def get_sage_client_for_user(
|
|
session: AsyncSession = Depends(get_session),
|
|
user: User = Depends(get_current_user),
|
|
) -> SageGatewayClient:
|
|
from services.sage_gateway import SageGatewayService
|
|
|
|
service = SageGatewayService(session)
|
|
active_gateway = await service.get_active_gateway(user.id)
|
|
|
|
if active_gateway:
|
|
logger.debug(f"Gateway active: {active_gateway.name} pour {user.email}")
|
|
return SageGatewayClient(
|
|
gateway_url=active_gateway.gateway_url,
|
|
gateway_token=active_gateway.gateway_token,
|
|
gateway_id=active_gateway.id,
|
|
)
|
|
|
|
logger.debug(f"Fallback .env pour {user.email}")
|
|
return SageGatewayClient()
|
|
|
|
|
|
async def get_gateway_context_for_user(
|
|
session: AsyncSession = Depends(get_session),
|
|
user: User = Depends(get_current_user),
|
|
) -> GatewayContext:
|
|
from services.sage_gateway import SageGatewayService
|
|
|
|
service = SageGatewayService(session)
|
|
active_gateway = await service.get_active_gateway(user.id)
|
|
|
|
if active_gateway:
|
|
return GatewayContext(
|
|
url=active_gateway.gateway_url,
|
|
token=active_gateway.gateway_token,
|
|
gateway_id=active_gateway.id,
|
|
gateway_name=active_gateway.name,
|
|
user_id=user.id,
|
|
is_fallback=False,
|
|
)
|
|
|
|
return GatewayContext(
|
|
url=settings.sage_gateway_url,
|
|
token=settings.sage_gateway_token,
|
|
gateway_id=None,
|
|
gateway_name="Fallback (.env)",
|
|
user_id=user.id,
|
|
is_fallback=True,
|
|
)
|
|
|
|
|
|
async def get_sage_client_public() -> SageGatewayClient:
|
|
return SageGatewayClient()
|