MirrorAPI/abstracts/repository.py
2025-11-03 15:18:26 -03:00

41 lines
1.1 KiB
Python

# abstracts/repository.py
from sqlalchemy.orm import Session
from database.mysql 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)