20 lines
778 B
Python
20 lines
778 B
Python
from typing import Optional
|
|
from sqlalchemy.orm import Session
|
|
from app.models.user import User
|
|
from app.repositories.base import BaseRepository
|
|
|
|
class UserRepository(BaseRepository[User]):
|
|
"""
|
|
User repository containing operations specific to the User entity.
|
|
"""
|
|
def get_by_username(self, db: Session, username: str) -> Optional[User]:
|
|
"""Find a user by their username."""
|
|
return db.query(self.model).filter(self.model.username == username).first()
|
|
|
|
def get_by_email(self, db: Session, email: str) -> Optional[User]:
|
|
"""Find a user by their email address."""
|
|
return db.query(self.model).filter(self.model.email == email).first()
|
|
|
|
# Instantiate user repository to be imported elsewhere
|
|
user_repository = UserRepository(User)
|