ifixkart-backend/Backend/app/repositories/session_repository.py

29 lines
1.3 KiB
Python

from typing import Optional, List
from sqlalchemy.orm import Session
from sqlalchemy import select, update
from app.models.UserSessionModel import UserSession
from app.repositories.base_repository import BaseRepository
class SessionRepository(BaseRepository[UserSession]):
def __init__(self):
super().__init__(UserSession)
def get_by_refresh_token(self, db: Session, token: str) -> Optional[UserSession]:
stmt = select(UserSession).where(UserSession.refresh_token == token, UserSession.is_active.is_(True))
return db.execute(stmt).scalar_one_or_none()
def get_active_sessions_by_user(self, db: Session, user_id: str) -> List[UserSession]:
stmt = select(UserSession).where(UserSession.user_id == user_id, UserSession.is_active.is_(True))
return list(db.execute(stmt).scalars().all())
def deactivate_all_sessions_for_user(self, db: Session, user_id: str) -> None:
stmt = update(UserSession).where(UserSession.user_id == user_id, UserSession.is_active.is_(True)).values(is_active=False)
db.execute(stmt)
db.commit()
def deactivate_session_by_id(self, db: Session, session_id: str) -> None:
stmt = update(UserSession).where(UserSession.session_id == session_id).values(is_active=False)
db.execute(stmt)
db.commit()
session_repository = SessionRepository()