28 lines
842 B
Python
28 lines
842 B
Python
|
from typing import Annotated, Any
|
||
|
from fastapi import Depends
|
||
|
from sqlalchemy.ext.asyncio import async_sessionmaker
|
||
|
from ..db import get_session
|
||
|
from ..auth import get_current_user, oauth2_scheme
|
||
|
from ..domain.user import User
|
||
|
|
||
|
|
||
|
AsyncSession = Annotated[async_sessionmaker, Depends(get_session)]
|
||
|
UserDependency = Annotated[User, Depends(get_current_user)]
|
||
|
|
||
|
|
||
|
class BaseController:
|
||
|
def __init__(self, session: AsyncSession) -> None:
|
||
|
self.async_session = session
|
||
|
|
||
|
async def call(self, *args, **kwargs) -> Any:
|
||
|
raise NotImplementedError
|
||
|
|
||
|
async def __call__(self, *args, **kwargs) -> Any:
|
||
|
return await self.call(*args, **kwargs)
|
||
|
|
||
|
|
||
|
class AuthorizedController(BaseController):
|
||
|
def __init__(self, session: AsyncSession, user: UserDependency) -> None:
|
||
|
super().__init__(session)
|
||
|
self.user = user
|