mirror of
https://github.com/grillazz/fastapi-sqlalchemy-asyncpg.git
synced 2025-08-26 16:40:40 +03:00
Merge pull request #122 from grillazz/2-add-model-relations-in-async-environment
refactor
This commit is contained in:
commit
62c001246a
@ -7,7 +7,7 @@ from app.models.stuff import Stuff
|
|||||||
from app.schemas.stuff import StuffResponse, StuffSchema
|
from app.schemas.stuff import StuffResponse, StuffSchema
|
||||||
from app.utils.logging import AppLogger
|
from app.utils.logging import AppLogger
|
||||||
|
|
||||||
logger = AppLogger.__call__().get_logger()
|
logger = AppLogger().get_logger()
|
||||||
|
|
||||||
router = APIRouter(prefix="/v1/stuff")
|
router = APIRouter(prefix="/v1/stuff")
|
||||||
|
|
||||||
|
@ -6,7 +6,7 @@ from sqlalchemy.ext.asyncio import async_sessionmaker
|
|||||||
from app.config import settings as global_settings
|
from app.config import settings as global_settings
|
||||||
from app.utils.logging import AppLogger
|
from app.utils.logging import AppLogger
|
||||||
|
|
||||||
logger = AppLogger.__call__().get_logger()
|
logger = AppLogger().get_logger()
|
||||||
|
|
||||||
engine = create_async_engine(
|
engine = create_async_engine(
|
||||||
global_settings.asyncpg_url.unicode_string(),
|
global_settings.asyncpg_url.unicode_string(),
|
||||||
|
@ -11,14 +11,16 @@ from app.api.health import router as health_router
|
|||||||
from app.redis import get_redis
|
from app.redis import get_redis
|
||||||
from app.services.auth import AuthBearer
|
from app.services.auth import AuthBearer
|
||||||
|
|
||||||
logger = AppLogger.__call__().get_logger()
|
logger = AppLogger().get_logger()
|
||||||
|
|
||||||
|
|
||||||
@asynccontextmanager
|
@asynccontextmanager
|
||||||
async def lifespan(app: FastAPI):
|
async def lifespan(app: FastAPI):
|
||||||
# Load the redis connection
|
# Load the redis connection
|
||||||
app.state.redis = await get_redis()
|
app.state.redis = await get_redis()
|
||||||
|
try:
|
||||||
yield
|
yield
|
||||||
|
finally:
|
||||||
# close redis connection and release the resources
|
# close redis connection and release the resources
|
||||||
app.state.redis.close()
|
app.state.redis.close()
|
||||||
|
|
||||||
|
@ -8,9 +8,17 @@ from fastapi import Request, HTTPException
|
|||||||
from fastapi.security import HTTPBearer, HTTPAuthorizationCredentials
|
from fastapi.security import HTTPBearer, HTTPAuthorizationCredentials
|
||||||
|
|
||||||
|
|
||||||
|
async def get_from_redis(request: Request, key: str):
|
||||||
|
return await request.app.state.redis.get(key)
|
||||||
|
|
||||||
|
|
||||||
|
async def set_to_redis(request: Request, key: str, value: str, ex: int):
|
||||||
|
return await request.app.state.redis.set(key, value, ex=ex)
|
||||||
|
|
||||||
|
|
||||||
async def verify_jwt(request: Request, token: str) -> bool:
|
async def verify_jwt(request: Request, token: str) -> bool:
|
||||||
_payload = await request.app.state.redis.get(token)
|
payload = await get_from_redis(request, token)
|
||||||
return bool(_payload)
|
return bool(payload)
|
||||||
|
|
||||||
|
|
||||||
class AuthBearer(HTTPBearer):
|
class AuthBearer(HTTPBearer):
|
||||||
@ -29,13 +37,14 @@ class AuthBearer(HTTPBearer):
|
|||||||
|
|
||||||
|
|
||||||
async def create_access_token(user: User, request: Request):
|
async def create_access_token(user: User, request: Request):
|
||||||
_payload = {
|
# sourcery skip: avoid-builtin-shadow
|
||||||
|
payload = {
|
||||||
"email": user.email,
|
"email": user.email,
|
||||||
"expiry": time.time() + global_settings.jwt_expire,
|
"expiry": time.time() + global_settings.jwt_expire,
|
||||||
"platform": request.headers.get("User-Agent"),
|
"platform": request.headers.get("User-Agent"),
|
||||||
}
|
}
|
||||||
_token = jwt.encode(_payload, str(user.password), algorithm=global_settings.jwt_algorithm)
|
token = jwt.encode(payload, str(user.password), algorithm=global_settings.jwt_algorithm)
|
||||||
|
|
||||||
_bool = await request.app.state.redis.set(_token, str(_payload), ex=global_settings.jwt_expire)
|
_bool = await set_to_redis(request, token, str(payload), ex=global_settings.jwt_expire)
|
||||||
if _bool:
|
if _bool:
|
||||||
return _token
|
return token
|
||||||
|
Loading…
x
Reference in New Issue
Block a user