diff options
Diffstat (limited to 'app/utils')
| -rw-r--r-- | app/utils/db.py | 38 | ||||
| -rw-r--r-- | app/utils/env.py | 0 | ||||
| -rw-r--r-- | app/utils/hash_cfg.py | 13 |
3 files changed, 29 insertions, 22 deletions
diff --git a/app/utils/db.py b/app/utils/db.py index 4daca74..5531998 100644 --- a/app/utils/db.py +++ b/app/utils/db.py @@ -1,34 +1,38 @@ -import asyncio import os +from typing import AsyncGenerator from dotenv import load_dotenv -from sqlalchemy.ext.asyncio import AsyncSession, create_async_engine -from sqlalchemy.orm import DeclarativeBase, sessionmaker +from sqlalchemy.ext.asyncio import ( + AsyncEngine, + AsyncSession, + async_sessionmaker, + create_async_engine, +) +from sqlalchemy.orm import DeclarativeBase load_dotenv() + DATABASE_URL = os.getenv("DATABASE_URL") if not DATABASE_URL: raise ValueError("DATABASE_URL not found in .env") -engine = create_async_engine(DATABASE_URL, echo=True, future=True) -async_session = sessionmaker(bind=engine, class_=AsyncSession, expire_on_commit=False) + +engine: AsyncEngine = create_async_engine( + DATABASE_URL, + echo=True, + pool_pre_ping=True, +) + +async_session = async_sessionmaker( + bind=engine, + expire_on_commit=False, +) class Base(DeclarativeBase): pass -async def get_async_session() -> AsyncSession: +async def get_async_session() -> AsyncGenerator[AsyncSession, None]: async with async_session() as session: yield session - - -async def init_db(): - - async with engine.begin() as conn: - await conn.run_sync(Base.metadata.create_all) - - -if __name__ == "__main__": - asyncio.run(init_db()) - print("All tables created!") diff --git a/app/utils/env.py b/app/utils/env.py new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/app/utils/env.py diff --git a/app/utils/hash_cfg.py b/app/utils/hash_cfg.py index 9937c99..48242d2 100644 --- a/app/utils/hash_cfg.py +++ b/app/utils/hash_cfg.py @@ -1,7 +1,7 @@ -from passlib.hash import argon2 +from argon2 import PasswordHasher +from argon2.exceptions import VerifyMismatchError -argon2_hasher = argon2.using( - type="ID", +ph = PasswordHasher( time_cost=3, memory_cost=65536, parallelism=4, @@ -9,8 +9,11 @@ argon2_hasher = argon2.using( def hash_password(password: str) -> str: - return argon2_hasher.hash(password) + return ph.hash(password) def verify_password(password: str, hashed: str) -> bool: - return argon2_hasher.verify(password, hashed) + try: + return ph.verify(hashed, password) + except VerifyMismatchError: + return False |
