joseph njoroge kariuki
Deploy Senti AI to Hugging Face Spaces
021e065
from sqlalchemy import create_engine, event
from sqlalchemy.orm import sessionmaker
from sqlalchemy.pool import QueuePool
import backend.config.settings as settings
engine = create_engine(
settings.DATABASE_URL,
poolclass=QueuePool,
pool_size=20,
max_overflow=30,
pool_pre_ping=True,
pool_recycle=1800,
pool_timeout=30,
connect_args={} if 'postgresql' in settings.DATABASE_URL else {"check_same_thread": False}
)
@event.listens_for(engine, "connect")
def set_sqlite_pragma(dbapi_connection, connection_record):
if "sqlite" in settings.DATABASE_URL:
cursor = dbapi_connection.cursor()
cursor.execute("PRAGMA journal_mode=WAL")
cursor.execute("PRAGMA synchronous=NORMAL")
cursor.execute("PRAGMA busy_timeout=5000")
cursor.close()
SessionLocal = sessionmaker(autocommit=False, autoflush=False, bind=engine)
def get_db():
db = SessionLocal()
try:
yield db
finally:
db.close()
import hashlib
from datetime import datetime
def hash_phone(phone: str) -> str:
return hashlib.sha256(phone.encode()).hexdigest()[:32]
def get_language_preference(user_hash, db):
from backend.database.postgres.models.users import User
user = db.query(User).filter(User.user_hash == user_hash).first()
return user.language_preference if user else None
def save_language_preference(
user_hash, language, db
):
from backend.database.postgres.models.users import User
existing = db.query(User).filter(User.user_hash == user_hash).first()
if existing:
existing.language_preference = language
existing.updated_at = datetime.utcnow()
else:
from core.auth import hash_password
db.add(User(
user_hash=user_hash,
language_preference=language,
pin_hash=hash_password("changeme"), # Requires password reset on first login
))
db.commit()
def delete_language_preference(user_hash, db):
from backend.database.postgres.models.users import User
user = db.query(User).filter(User.user_hash == user_hash).first()
if user:
user.language_preference = "en"
db.commit()