TIF_E41253310/Backend/app/repositories/prodi.py

50 lines
1.2 KiB
Python

from sqlalchemy.orm import Session
from app.models.prodi import Prodi
from app.schemas.prodi import ProdiCreate, ProdiUpdate
class ProdiRepository:
@staticmethod
def get_all(db: Session):
return db.query(Prodi).all()
@staticmethod
def get_by_id(db: Session, prodi_id: int):
return db.query(Prodi).filter(Prodi.id == prodi_id).first()
@staticmethod
def create(db: Session, prodi: ProdiCreate):
db_prodi = Prodi(**prodi.model_dump())
db.add(db_prodi)
db.commit()
db.refresh(db_prodi)
return db_prodi
@staticmethod
def update(db: Session, prodi_id: int, prodi: ProdiUpdate):
db_prodi = db.query(Prodi).filter(Prodi.id == prodi_id).first()
if not db_prodi:
return None
update_data = prodi.model_dump(exclude_unset=True)
for key, value in update_data.items():
setattr(db_prodi, key, value)
db.commit()
db.refresh(db_prodi)
return db_prodi
@staticmethod
def delete(db: Session, prodi_id: int):
db_prodi = db.query(Prodi).filter(Prodi.id == prodi_id).first()
if not db_prodi:
return None
db.delete(db_prodi)
db.commit()
return db_prodi