2020-01-19 22:40:50 +01:00
|
|
|
# For a new basic set of CRUD operations you could just do
|
|
|
|
# from .base import CRUDBase
|
|
|
|
# from app.models.item import Item
|
|
|
|
# from app.schemas.item import ItemCreate, ItemUpdate
|
|
|
|
# item = CRUDBase[Item, ItemCreate, ItemUpdate](Item)
|
2023-11-29 12:13:15 -05:00
|
|
|
from sqlmodel import Session, select
|
2024-02-25 19:39:33 +01:00
|
|
|
|
2023-12-27 19:06:47 +01:00
|
|
|
from app.core.security import get_password_hash, verify_password
|
2024-02-25 19:39:33 +01:00
|
|
|
from app.models import User, UserCreate
|
|
|
|
|
|
|
|
from .crud_item import item as item
|
|
|
|
from .crud_user import user as user
|
2023-11-25 00:08:22 +01:00
|
|
|
|
|
|
|
|
2023-11-29 12:13:15 -05:00
|
|
|
def create_user(*, session: Session, user_create: UserCreate) -> User:
|
2023-11-25 00:08:22 +01:00
|
|
|
db_obj = User.from_orm(
|
|
|
|
user_create, update={"hashed_password": get_password_hash(user_create.password)}
|
|
|
|
)
|
|
|
|
session.add(db_obj)
|
|
|
|
session.commit()
|
|
|
|
session.refresh(db_obj)
|
|
|
|
return db_obj
|
2023-11-29 12:13:15 -05:00
|
|
|
|
|
|
|
|
|
|
|
def get_user_by_email(*, session: Session, email: str) -> User | None:
|
|
|
|
statement = select(User).where(User.email == email)
|
|
|
|
session_user = session.exec(statement).first()
|
|
|
|
return session_user
|
2023-12-27 19:06:47 +01:00
|
|
|
|
|
|
|
|
|
|
|
def authenticate(*, session: Session, email: str, password: str) -> User | None:
|
2024-02-25 19:39:33 +01:00
|
|
|
db_user = get_user_by_email(session=session, email=email)
|
|
|
|
if not db_user:
|
2023-12-27 19:06:47 +01:00
|
|
|
return None
|
2024-02-25 19:39:33 +01:00
|
|
|
if not verify_password(password, db_user.hashed_password):
|
2023-12-27 19:06:47 +01:00
|
|
|
return None
|
2024-02-25 19:39:33 +01:00
|
|
|
return db_user
|