# abstracts/repository.py from sqlalchemy.orm import Session from database.postgres import SessionLocal class BaseRepository: """Classe base para repositórios ORM.""" def __init__(self): self.session: Session = SessionLocal() def __enter__(self): return self def __exit__(self, exc_type, exc_value, traceback): if exc_type: self.session.rollback() else: self.session.commit() self.session.close() # 🔹 Métodos utilitários ORM def add(self, instance): """Adiciona um registro.""" self.session.add(instance) self.session.commit() self.session.refresh(instance) return instance def delete(self, instance): """Remove um registro.""" self.session.delete(instance) self.session.commit() def all(self, model, limit: int = 100): """Retorna todos os registros de um modelo.""" return self.session.query(model).limit(limit).all() def get(self, model, pk: int): """Busca um registro por ID.""" return self.session.get(model, pk)