Commit existing codebase
This commit is contained in:
commit
49bc902bb9
24 changed files with 1208 additions and 0 deletions
42
app/user/service.py
Normal file
42
app/user/service.py
Normal file
|
|
@ -0,0 +1,42 @@
|
|||
from typing import Optional
|
||||
|
||||
from passlib.context import CryptContext
|
||||
from sqlalchemy.orm import Session
|
||||
|
||||
from app.user.model import User
|
||||
|
||||
pwd_context = CryptContext(schemes=["bcrypt"])
|
||||
|
||||
|
||||
def create_user(db: Session, user: User) -> User:
|
||||
if get_user_by_username_or_email(db, user.username, user.email) is not None:
|
||||
raise Exception()
|
||||
|
||||
user.password = pwd_context.hash(user.password)
|
||||
db.add(user)
|
||||
db.commit()
|
||||
db.refresh(user)
|
||||
return user
|
||||
|
||||
|
||||
def get_user_by_id(db: Session, id: int) -> Optional[User]:
|
||||
return db.query(User).filter(User.id == id).one_or_none()
|
||||
|
||||
|
||||
def get_user_by_username(db: Session, username: str) -> Optional[User]:
|
||||
return db.query(User).filter(User.username == username).one_or_none()
|
||||
|
||||
|
||||
def get_user_by_username_or_email(db: Session, username: str, email: str) -> Optional[User]:
|
||||
return db.query(User).filter(User.username == username, User.email == email).one_or_none()
|
||||
|
||||
|
||||
def delete_user_by_id(db: Session, id: int):
|
||||
user = get_user_by_id(db, id)
|
||||
if user is not None:
|
||||
db.delete(user)
|
||||
db.commit()
|
||||
|
||||
|
||||
def passwords_match(hashed: str, raw: str) -> bool:
|
||||
return pwd_context.verify(raw, hashed)
|
||||
Loading…
Add table
Add a link
Reference in a new issue