50 lines
1.2 KiB
Python
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 |