Files
back-end/src/crud/users.py
2023-04-01 10:03:18 -06:00

33 lines
1.1 KiB
Python

from fastapi import HTTPException
from passlib.context import CryptContext
from sqlalchemy.orm import Session
from models import User
from schemas.users import UserCreate
pwd_context = CryptContext(schemes=["bcrypt"], deprecated="auto")
def patch_user(db: Session, username: str, user: UserCreate):
"""Changes the username and/or the password of a User"""
db_user = get_user_by_username(db, username)
potential_duplicate = get_user_by_username(db, user.username)
if potential_duplicate:
if potential_duplicate.user_id != db_user.user_id:
raise HTTPException(status_code=400, detail="Username already registered")
db_user.username = user.username
db_user.hashed_password = pwd_context.hash(user.password)
db_user.avatar = user.avatar
db.commit()
def get_user_by_username(db: Session, username: str):
"""Fetches a User from the database by their username"""
return db.query(User).filter(User.username == username).first()
def get_users(db: Session):
"""Fetch a list of all users"""
return db.query(User).all()