ifixkart-backend/app/repositories/base_repository.py

32 lines
933 B
Python

from typing import Generic, Type, TypeVar, List, Any, Optional
from sqlalchemy.orm import Session
from sqlalchemy import select
T = TypeVar("T")
class BaseRepository(Generic[T]):
def __init__(self, model: Type[T]):
self.model = model
def get_by_id(self, db: Session, id: Any) -> Optional[T]:
return db.get(self.model, id)
def get_all(self, db: Session, skip: int = 0, limit: int = 100) -> List[T]:
stmt = select(self.model).offset(skip).limit(limit)
return list(db.execute(stmt).scalars().all())
def create(self, db: Session, entity: T) -> T:
db.add(entity)
db.commit()
db.refresh(entity)
return entity
def update(self, db: Session, entity: T) -> T:
db.add(entity)
db.commit()
db.refresh(entity)
return entity
def delete(self, db: Session, entity: T) -> None:
db.delete(entity)
db.commit()