from sqlalchemy.orm import Session from app.models.user import User from app.schemas.user import UserCreate from typing import Optional class UserRepository: def get_by_id(self, db: Session, user_id: int) -> Optional[User]: return db.query(User).filter(User.id == user_id).first() def get_by_email(self, db: Session, email: str) -> Optional[User]: return db.query(User).filter(User.email == email).first() def get_by_username(self, db: Session, username: str) -> Optional[User]: return db.query(User).filter(User.username == username).first() def create(self, db: Session, user_data: dict) -> User: user = User(**user_data) db.add(user) db.commit() db.refresh(user) return user def update(self, db: Session, user: User, user_data: dict) -> User: for key, value in user_data.items(): setattr(user, key, value) db.commit() db.refresh(user) return user def delete(self, db: Session, user: User) -> None: db.delete(user) db.commit() def list(self, db: Session, skip: int = 0, limit: int = 100): return db.query(User).offset(skip).limit(limit).all()