Untitled
unknown
plain_text
5 months ago
2.0 kB
2
Indexable
from typing import Annotated from fastapi import BackgroundTasks, Depends from sqlalchemy import select from sqlalchemy.orm import Session from strawberry.dataloader import DataLoader from strawberry.fastapi import BaseContext from app.dependencies import current_user, get_db from app.helpers.custom_logger import get_backend_logger from app.models import User from .loaders import StatusLoader, UserByLoginLoader, UserLoader, ValidationLoader class Context(BaseContext): """ Represents the context for GraphQL resolvers. Args: current_user (str | None): The current user. session (Session): The database session. Attributes: current_user (int | None): The ID of the current user. session (Session): The database session. """ def __init__( self, current_user: str | None, session: Session, background_tasks: BackgroundTasks, ): self.current_user = None self.session = session self.background_tasks = background_tasks self.backend_logger = get_backend_logger() if current_user is not None: self.current_user = session.scalar( select(User).filter(User.email.ilike(current_user)) ) # Create all the data loaders for this context self.load_user = DataLoader(load_fn=UserLoader(session)) self.load_user_by_login = DataLoader(load_fn=UserByLoginLoader(session)) self.load_status = DataLoader(load_fn=StatusLoader(session)) self.load_validation = DataLoader(load_fn=ValidationLoader(session)) def context_dependency( current_user: Annotated[current_user, Depends()], session: Annotated[get_db, Depends()], background_tasks: BackgroundTasks, ) -> Context: return Context(current_user, session, background_tasks) def get_context(context: Annotated[context_dependency, Depends()]): return context
Editor is loading...
Leave a Comment