Files
fuware-be/fuware/repos/repository_users.py

61 lines
1.6 KiB
Python

from fuware.core.security.hasher import get_hasher
from fuware.db.models import SessionLogin, User
from fuware.schemas import UserCreate
from sqlalchemy.orm import Session
class RepositoryUsers:
def __init__(self):
self.user = User()
self.sessionLogin = SessionLogin()
def get_all(self, skip: int = 0, limit: int = 100):
return self.user.query.offset(skip).limit(limit).all()
def get_by_username(self, username: str):
return self.user.query.filter_by(username=username).first()
def create(self, db: Session, user: UserCreate):
try:
hasher = get_hasher()
db_user = User(username=user.username, password=hasher.hash(user.password), name=user.name)
db.add(db_user)
db.commit()
except Exception:
db.rollback()
raise
db.refresh(db_user)
return db_user
def get_session_by_user_id(self, user_id: str):
return self.sessionLogin.query.filter_by(user_id=user_id).first()
def create_session(self, db: Session, user_id: str):
try:
db_ss = SessionLogin(user_id=user_id)
db.add(db_ss)
db.commit()
except Exception:
db.rollback()
raise
db.refresh(db_ss)
return db_ss
def login(self, db: Session, user_id: str):
db_ss = self.get_session_by_user_id(user_id)
if not db_ss:
db_ss = self.create_session(db=db, user_id=user_id)
return db_ss
def logout(self, db: Session, user_ss: str):
db_ss = self.sessionLogin.query.filter_by(session=user_ss).first()
try:
db.delete(db_ss)
db.commit()
except Exception as e:
db.rollback()
raise e
pass