31 lines
896 B
Python
31 lines
896 B
Python
from __future__ import annotations
|
|
|
|
from typing import Optional
|
|
|
|
from sqlalchemy import select
|
|
from sqlalchemy.orm import Session
|
|
|
|
from adapters.db.models.user import User
|
|
|
|
|
|
class UserRepository:
|
|
def __init__(self, db: Session) -> None:
|
|
self.db = db
|
|
|
|
def get_by_email(self, email: str) -> Optional[User]:
|
|
stmt = select(User).where(User.email == email)
|
|
return self.db.execute(stmt).scalars().first()
|
|
|
|
def get_by_mobile(self, mobile: str) -> Optional[User]:
|
|
stmt = select(User).where(User.mobile == mobile)
|
|
return self.db.execute(stmt).scalars().first()
|
|
|
|
def create(self, *, email: str | None, mobile: str | None, password_hash: str, first_name: str | None, last_name: str | None) -> User:
|
|
user = User(email=email, mobile=mobile, password_hash=password_hash, first_name=first_name, last_name=last_name)
|
|
self.db.add(user)
|
|
self.db.commit()
|
|
self.db.refresh(user)
|
|
return user
|
|
|
|
|