simplechat/backend_py/db_handler.py
2025-07-31 00:41:19 +02:00

37 lines
1.1 KiB
Python

from sqlalchemy import create_engine
from sqlalchemy.orm import declarative_base, sessionmaker
from sqlalchemy import Column, Integer, String
from dataclasses import dataclass
Base = declarative_base()
class User(Base):
__tablename__ = 'users'
name = Column(String, primary_key=True)
hash = Column(String)
role = Column(String)
class DbConnector:
def __init__(self, db_url: str):
self.engine = create_engine(db_url)
Base.metadata.create_all(self.engine)
self.session = sessionmaker(bind=self.engine)()
self._create_defaults()
def _create_defaults(self):
self.add_user(name="admin", hash="$2b$12$IcUr5w7pIFaXaGVFP5yVV.b.sIYjDbETR3l2PKgWO4nkrHU.1HmFa", role="admin")
def get_user(self, name: str) -> User | None:
return self.session.query(User).filter(User.name==name).first()
def add_user(self, name: str, hash: str, role: str = "user"):
if self.get_user(name):
raise ValueError("User already exists")
new_user = User(name, hash, role)
self.session.add(new_user)
self.session.commit()