summaryrefslogtreecommitdiff
path: root/app/utils
diff options
context:
space:
mode:
Diffstat (limited to 'app/utils')
-rw-r--r--app/utils/db.py38
-rw-r--r--app/utils/env.py0
-rw-r--r--app/utils/hash_cfg.py13
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