pycdn/db/models/User.py
2023-04-06 23:58:56 +03:00

53 lines
1.4 KiB
Python

from typing import Optional
from sqlmodel import Field, SQLModel, Session, select
from db.DB import DB, DBException
from sqlalchemy import exc
import hashlib, uuid, base64
class User(SQLModel, table=True):
id: Optional[int] = Field(default=None, primary_key=True)
name: Optional[str] = None
login: str = Field(max_length=255)
email: str = Field(sa_column_kwargs={'unique': True})
age: Optional[int] = None
password_hash: str = Field(max_length=255)
status: Optional[int] = Field(default=0)
def create(self):
db = DB()
session = Session(db.get_engine())
self.password_hash = self.create_password_hash(self.password_hash)
session.add(self)
try:
session.commit()
session.refresh(self)
except exc.SQLAlchemyError as sqla_error:
return DBException(sqla_error)
session.close()
return self
@staticmethod
def get_by_id(user_id):
db = DB()
with Session(db.get_engine()) as s:
statement = select(User).where(User.id == user_id)
res = s.exec(statement)
return res.first()
@staticmethod
def create_password_hash(password):
salt = "5gz"
# Adding salt at the last of the password
data_base_password = password + salt
# Encoding the password
hashed = hashlib.md5(data_base_password.encode())
return hashed.hexdigest()