import uuid from fastapi import Depends, HTTPException, status from fastapi.security import HTTPAuthorizationCredentials, HTTPBearer from sqlalchemy import select from sqlalchemy.ext.asyncio import AsyncSession from app.database import get_db from app.models.user import User api_key_scheme = HTTPBearer() async def get_user_by_api_key( credentials: HTTPAuthorizationCredentials = Depends(api_key_scheme), db: AsyncSession = Depends(get_db), ) -> User: result = await db.execute( select(User).where(User.api_key == credentials.credentials) ) user = result.scalar_one_or_none() if user is None: raise HTTPException(status_code=status.HTTP_401_UNAUTHORIZED, detail="Invalid API key") return user