"""
Helper umum untuk operasi database yang sering diulang.
"""
from fastapi import HTTPException
from sqlalchemy.orm import Session


def get_or_404(db: Session, model, id: int, name: str = "Data"):
    """
    Ambil satu record by primary key, raise 404 kalau tidak ditemukan.

    Contoh:
        event = get_or_404(db, SpecialEvent, event_id, "Event")
    """
    obj = db.query(model).filter(model.id == id).first()
    if not obj:
        raise HTTPException(status_code=404, detail=f"{name} tidak ditemukan")
    return obj
