Files
notytex/repositories/base_repository.py
2025-08-05 06:13:54 +02:00

37 lines
1010 B
Python

from abc import ABC, abstractmethod
from typing import TypeVar, Generic, List, Optional, Dict, Any
from sqlalchemy.orm import Query
from models import db
T = TypeVar('T')
class BaseRepository(Generic[T], ABC):
"""Repository de base avec opérations CRUD."""
def __init__(self, model_class: type):
self.model_class = model_class
self.session = db.session
def find_by_id(self, id: int) -> Optional[T]:
return self.session.get(self.model_class, id)
def find_all(self) -> List[T]:
return self.model_class.query.all()
def save(self, entity: T) -> T:
self.session.add(entity)
return entity
def delete(self, entity: T) -> None:
self.session.delete(entity)
def commit(self) -> None:
self.session.commit()
def rollback(self) -> None:
self.session.rollback()
def flush(self) -> None:
"""Flush pour obtenir les IDs sans committer."""
self.session.flush()